窦霸迅速靠近翟广。魏人既然攻克滑台,又集中进攻翟广等,翟军众寡悬殊,便慢慢引退,边退却边战斗,经两日一夜,才行十多里,魏人步兵接着追击过来,翟广等弹尽粮竭,大败。翟广、窦霸、刘谈之等各自单独逃归。
魏军乘胜进攻虎牢,毛德祖挑出步骑兵想打击敌人,魏人便退驻土楼,又退回滑台。长安、魏昌、蓝田三县百姓在虎牢城下,毛德祖都让他们进城。魏人另外派黑矛肖公于栗石单率三千人到河阳,想南渡黄河攻取金墉城。毛德祖派振威将军、河阴令窦晃等五百人戍守小垒,缑氏县令王瑜带四百人据守监仓,巩县令臣子琛五百人守小平,参军督护张季五百人在牛兰驻守。又派将领带领骑兵,和洛阳令杨毅集合二百骑兵,沿黄河上下,机动增援。十二月,魏人在洛川小垒那里建立据点。毛德祖派翟广带兵快速前往攻击,魏兵退走。翟广加固小垒的防守,修治戍堡,再回到虎牢。豫州刺史刘粹派治中高道瑾带领步骑兵占据项城,又派司马徐琼在后继续前进,朝廷派将军辅迫遣、姚珍、杜坦、梁灵宰等率水步兵继续出发。徐州刺史王仲德率兵驻在湖陆。魏国黑矛肖公于粟石单派长史带一千人紧逼窦晃、杨毅。窦晃等迎击,捉住了于粟石单的长史,活捉二百人。之后魏人的郑兵将军带五千人突袭窦晃等人,黑矛肖公于粟石单渡过黄河并力从四面八方向窦晃的营垒攻击,窦晃等人力量太小只好溃逃。窦晃和杨毅都受了重伤。魏将安平公鹅青两支军队也南渡黄河,沿石高石敖城向东,到了泗渎口,离尹卯一百里,兖州刺史徐琰丢下徐州城而逃,于是泰山各郡都失陷了。
魏人郑兵将军和公孙表与宋兵将军、交州刺史交阝止侯普几带领一万五千骑兵,再进向虎牢。在城东南五里处扎营,分出步骑兵从成皋开向虎牢外城西门。毛德祖迎击,杀伤一百多魏兵,魏人退回自己的营垒,镇北将军檀道济率领水兵北向增援。车骑将军庐陵王刘义真派龙骧将军沈叔狸带三千人靠近豫州刺史刘粹,灵活援助守军。少帝景平元年(423)正月,魏人郑兵将军向洛阳进发,进攻小垒,小垒守将窦晃抵抗,被敌人攻陷,河南太守王涓之弃下金墉城逃跑。
从魏军分兵指向洛阳,毛德祖每次交战都打败敌人。拓跋嗣亲自率领大军到邺城,魏郑兵将军既然攻下金墉城,再回师虎牢城。毛德祖在城内挖出地洞,进入其中七丈远,两个方向连到城外,又再分成六个地道,从魏军阵后出击。又选敢死士兵四百人,由参军范道基率二百人作先锋,参军郭王符、刘规等带二百人作后卫,从敌人外围,两面掩袭敌人。魏国阵脚大乱,被杀死几百人,焚烧全部进攻工具。魏军退了回去,但不久又再包围城池。
魏人又派楚兵将军徐州刺史安平公涉归幡能健、越兵将军青州刺史临。。侯薛道千,陈兵将军淮州刺史寿张子张模东向攻青州,所到之处,宋国城邑望风而逃。宋国冠军将军青州刺史竺夔镇守东阳城,听说魏人将要到来,集中人马固守本城。宋国龙骧将军,济南太守垣苗率领二府郡的文武官员将逃奔竺夔,竺夔和将士们对天发誓,百姓不进城的人便叫他们移到山中防守,烧掉禾苗,叫魏人无所收获。魏兵攻向青州,前后过河的共六万骑兵。三月,魏人三万骑兵先期临城。城内文武将士一千五百人,而其中一半是羌族胡人和流民。所以人心非常恐惧。竺夔夜半派司马车宗率五百人出城偷袭敌人,魏兵退走。过了两天,魏人步骑兵全部到了城下,将东阳城团团围住。布阵十多里,到下午四五点钟时退回安水扎营,离城二十里,大造攻城工具,每天分出步兵和骑兵常来攻城。竺夔半夜叫殿中将军竺宗之、参军贾元龙等人率领有一百多人在杨水口两岸设置伏兵。魏将阿伏斤带三百人早晨渡过杨水,两岸的伏兵突起。魏国骑兵到处逃跑。杀伤几十人,砍下阿伏斤的脑袋。敌人又在杨水南岸扎营,正离东阳城西北四里。
拓跋嗣从邺城派兵增援虎牢的魏兵,增加围攻兵力,展开更猛烈的攻击。魏人郑兵将军在虎牢率步兵和骑兵三千,又进攻在许昌的颍川太守李元德。车骑参军王玄谟带领一千人,帮助李元德防守,和李元德都溃败了。魏人便用颍川人庾龙当颍川太守,统管五百骑兵,又征调百姓壮丁防守许昌。毛德祖出兵攻击公孙表,展开激烈战斗,从早晨到黄昏,杀死几百魏兵。恰遇魏人郑兵将军从许昌回来,两面夹击德祖,毛德祖大败,丢下一千多士兵,退回虎牢固守。拓跋嗣又在邺城派一万多人从白沙口渡过黄河,在濮阳城南修筑堡垒。朝廷谋臣说:“项城离敌人不远,不是小股军队能攻下的,派刘粹召回高道瑾回到寿阳。如果沈叔狸已出发,也应该追回。”刘粹认为魏军正进攻虎牢,不再向南,如果收兵从项城退回,那么淮河以西的各部,便无所凭仗,沈叔狸已经屯驻肥口,又不应轻易退兵。当时李元德率领散兵二百人到项城,刘粹叫他帮助高道瑾戍守项城,请求朝廷原谅他的逃跑罪过,朝廷同意了。
檀道济到彭城,因为青州、司州都很危急,但他率领的部队又不多,不能分开赴援。青州的路近些,竺夔的兵力弱小些,便先救青州。竺夔派人出城挖城东西南面的城壕,魏人在城北三百多步远的地方,挖长围。竺夔派参军闾茂等人带领会射击的五十人,靠着城墙射击敌人。魏人骑兵几百赶过来围攻城墙。城墙内的人便停止射击,躲在墙内奋力苦斗。敌人便下马步行而前,短兵相接,城墙上又弓箭齐发,魏人便又退回去。魏军便又填满外围城壕,拉来四个木制高楼,虾蟆车二十辆,放在长围之内。竺夔先在北城墙内挖三个地洞,叫他们与外城壕相通,又在外城壕之内作内城壕,派三百人从地道中出来,想烧掉魏人攻城工具。当时突然风向回转,火不能烧起来,魏兵箭矛齐下,宋兵士卒反而都受了伤,于是收兵入进。魏人填满三方壕沟,只剩下里面的一层壕沟,虾蟆车够不上。魏人于是用撞车撞城。竺夔又招募勇士,在城墙上系上大磨石推击而出。又从里面的一层壕沟出来,用大麻绳张开骨架般的冲击巨棍,攻击靠近城墙的撞车,下面从地道中让很多人拉折敌人撞车的下轴。魏人再在城南挖掘长围,进攻更加激烈。竺夔能持重,垣苗有胆略,所以能长时间坚守。但是被很长时间进攻,城墙的砖头被大量毁坏,战士死亡极多。剩下的老弱残兵疲惫不堪,城池时刻都有可能陷落,檀道济、王仲德日夜兼程而进。
刘粹派李元德袭击许昌,庾龙奔逃。宋将宋晃紧追,终于将庾龙斩首。李元德于是留守许昌,同时上供军粮。魏军悦勃大肥率领三千多骑兵,攻破高平郡属下的高平、方与、任城、金乡、亢父等五县城,杀死掳掠二千多家,杀掉其中的男人,掳获其中的妇女儿童。兖州刺史郑顺之戍守湖陆城,因为兵力太少不敢出击。冠军将军申宣戍彭城,离高平二百余里,担心魏人突然到来,把城外居民迁进城内,其他各种营垒,全部进入全城之内。
拓跋嗣又派并州刺史伊楼拔帮郑兵将军围攻虎牢,填满两方城壕、毛德祖灵活抵御,很杀了些魏兵,但自己的将士也不断减少。
四月壬申,魏人听说檀道济将到来,便烧掉攻城工具,丢下青州而去。竺夔上书说东阳城被围攻毁坏太厉害,不能防守,移到长广郡的不其城镇守。竺夔因为守城的功劳而升为前将军,封爵建陵县男,食邑四百户,竺夔字祖季,是东莞人。官至金紫光禄大夫。
拓跋嗣亲自率大军到虎牢,停驻三天。统管攻城,没有攻下,便回兵向洛阳,留下三千人帮助郑兵将军。驻停洛阳几天,便渡过黄河回到北方。魏国安平公等各部队从青州退还,直趋滑台。檀道济、王仲德步兵缺少粮食,未赶上魏军,檀道济在泰山分派王仲德进向尹卯,檀道济屯驻湖陆。王仲德还未到尹卯,听说魏人已走远,回来与道济合兵,共同准备水军。魏国安平公等部队进到滑台,向西靠近郑兵将军,共同进攻虎牢。虎牢被包围二百多天,每天都有激烈的战斗,毛德祖的精兵大部分都战死了,但是魏人增兵更多。魏人用车撞击外城,德祖在内城又构筑三重城墙,仍旧是四重城墙。敌人撞毁三重城墙,毛德祖防守最里的一层,昼夜拒战,战士们眼睛都生了疮,死了一大半的人。毛德祖一向对将士们非常仁厚。所以将士们并没有叛离的心思。毛德祖当年在北方,和魏将公孙表是老朋友,公孙表颇有谋略,毛德祖觉得他是个祸害,于是和他通消息,又暗中派内奸告诉郑兵将军,说公孙表和毛德祖相互勾结。毛德祖每次给公孙表回信,便有很多改定的地方。公孙表把书信给郑兵将军看,郑兵将军更加怀疑他,告诉拓跋嗣,便杀了公孙表。魏兵更加多了,檀道济各路救兵不敢前进。刘粹屯驻项城,沈叔狸屯驻高桥。