兵数不胜数。恰逢日落,南朝宋别将鲁元保领兵从函谷关赶到,北魏军队才撤退。柳元景派遣军副柳元怙率领两千步兵、骑兵救援薛安都等人,夜里抵达,北魏军队没有察觉。第二天,薛安都等人在陕城西南列阵。曾方平对薛安都说:“如今强敌在前,坚城在后,今天就是我们拼死的日子。你要是不前进,我就杀了你;我要是不前进,你就杀了我!” 薛安都说:“好,你说得对!” 于是双方展开激战。柳元怙领兵从南门击鼓呐喊着直冲而出,旌旗招展,气势盛大,北魏士兵大为震惊。薛安都挺身而出,奋力杀敌,鲜血凝固在肘部,长矛折断了,就换一把再冲进去,各路军队也一起奋勇作战。从清晨到午后,北魏军队大败,斩杀张是连提及将士三千多人。其余北魏士兵坠入黄河和壕沟而死的很多,两千多人投降。第二天,柳元景抵达陕城,责备投降的北魏士兵说:“你们本来是中原百姓,如今却为胡虏卖力,打不过才投降,为什么?” 投降的人都说:“胡虏逼迫百姓作战,后出发的人会被灭族,用骑兵逼迫步兵前进,没打仗就先死了,这是将军您亲眼所见的啊。” 将领们想把投降的人全部杀掉,柳元景说:“如今朝廷大军北上,应当让仁爱之声先传遍中原。” 于是把投降的人全部释放遣返,他们都喊着 “万岁” 离去。十一月甲午日,南朝宋攻克陕城。
庞法起等人进攻潼关,北魏守将娄须弃城逃走,庞法起等人占据潼关。关中地区的豪杰到处起兵响应南朝宋,四周山区的羌人、胡人也都前来归附。
宋文帝因王玄谟战败撤退,北魏军队深入国境,认为柳元景等人不宜单独进军,于是将他们全部召回。柳元景派薛安都担任后卫,领兵返回襄阳。文帝下诏任命柳元景为襄阳太守。
北魏永昌王拓跋仁攻打悬瓠、项城,攻克两地。文帝担心北魏军队进攻寿阳,召刘康祖率军返回。十一月癸卯日,拓跋仁率领八万骑兵在尉武追上刘康祖。刘康祖有八千部众,军副胡盛之想依托山地险要从小路撤退,刘康祖愤怒地说:“我们到黄河边寻找敌人,却没见到踪影;如今敌人自己送上门来,怎么能躲避!” 于是把战车结成营垒前进,向军中下令:“敢回头观望的人斩首,敢后退的人砍脚!” 北魏军队从四面围攻,南朝宋将士都拼死作战。从清晨到黄昏,杀死北魏士兵一万多人,鲜血淹没了脚踝,刘康祖身上受伤十处,斗志却更加旺盛。北魏把军队分成三部分,轮流作战、休息。恰逢日落时分刮起大风,北魏士兵骑着马背着草焚烧南朝宋的车营,刘康祖随时修补营垒的缺口。一支流箭射中刘康祖的脖子,他坠马而死,残余部众无法继续作战,于是溃散,北魏军队追击,几乎将他们全部杀光。
南平王刘铄派左军行参军王罗汉率领三百人驻守尉武。北魏军队抵达后,王罗汉的部下想向南依靠低矮的树林自保,王罗汉因接受命令驻守这里,不肯离开。北魏军队进攻并擒获了他,用锁链锁住他的脖子,让三郎将(北魏官职)看守;王罗汉夜里砍下三郎将的头,抱着锁链逃奔盱眙。
北魏永昌王拓跋仁进逼寿阳,焚烧劫掠马头、钟离两地,南平王刘铄环城固守。
北魏军队驻守萧城,距离彭城只有十几里。彭城的军队虽然人数多,但粮食少,太尉江夏王刘义恭想放弃彭城南撤。安北中兵参军沈庆之认为历城兵少粮多,提议组成 “函箱阵”(一种严密的车阵),用精锐士兵在外侧护卫,护送江夏王、武陵王及王妃、公主直接赶赴历城;分兵给护军萧思话,让他留守彭城。太尉长史何勖则想率军席卷物资逃往郁洲,从海路返回京城。刘义恭撤退的心意已经确定,但这两种意见争论了一整天都没决定。安北长史、沛郡太守张畅说:“如果历城、郁洲确实有可以到达的道理,我怎敢不极力赞同!如今城中缺粮,百姓都有逃走的想法,只是因为城门紧闭、防守严密,想走也走不了而已。一旦行动,大家就会各自逃散,想到达目的地,怎么可能呢!现在军粮虽然少,但早晚还不至于断绝;怎么能放弃安全的办法,却选择危险灭亡的道路呢?如果一定要执行撤退计划,我请求用脖子里的血玷污您的马蹄(意为死谏)。” 武陵王刘骏对刘义恭说:“叔父您既然是全军统帅,是否撤退我不敢干预,但我忝为彭城城主,却放弃城池逃跑,实在没脸再面对朝廷。我一定要和这座城共存亡,张长史的话不能反对。” 刘义恭这才放弃撤退的想法。
十一月壬子日,北魏皇帝抵达彭城,在戏马台搭建毡屋,眺望城中情况。
马文恭战败时,队主蒯应陷入北魏军中。北魏皇帝派蒯应到彭城小市门请求索要酒和甘蔗;武陵