北魏皇帝命令将领们分路并进:永昌王拓跋仁从洛阳赶赴寿阳,尚书长孙真赶赴马头,楚王拓跋建赶赴钟离,高凉王拓跋那从青州赶赴下邳,皇帝亲自从东平赶赴邹山。
十一月辛卯日,北魏皇帝抵达邹山,鲁郡太守崔邪利被北魏擒获。北魏皇帝看到秦始皇留下的石刻,派人把石刻推倒,用太牢(牛、羊、猪各一头)祭祀孔子。
北魏楚王拓跋建从清河西岸进军,驻守萧城;步尼公从清河东岸进军,驻守留城。武陵王刘骏派遣参军马文恭领兵赶赴萧城,江夏王刘义恭派遣军主嵇玄敬领兵赶赴留城。马文恭被北魏军队击败。步尼公遇到嵇玄敬后,领兵赶赴苞桥,想渡过清河到西岸;沛县百姓烧毁苞桥,夜里在树林中击鼓,北魏军队以为南朝宋大军赶到,争相渡过苞水,淹死的人将近一半。
宋文帝下诏任命柳元景为弘农太守。柳元景派薛安都、尹显祖先领兵到陕城与庞法起等人会合,自己在后方督促粮草运输。陕城地势险要坚固,各路军队攻打不下。北魏洛州刺史张是连提率领两万部众越过崤山救援陕城,薛安都等人与他在陕城南面交战,北魏出动精锐骑兵冲锋,南朝宋各路军队抵挡不住;薛安都大怒,摘下头盔,脱下铠甲,只穿着深红色的两当衫(古代军服),战马也卸下铠甲,瞪着眼睛、横持长矛,单骑冲入北魏军阵;他所向无敌,北魏士兵从两侧射箭都射不中他。这样冲锋了多次,杀死杀伤的北魏士兵数不胜数。恰逢日落,南朝宋别将鲁元保领兵从函谷关赶到,北魏军队才撤退。柳元景派遣军副柳元怙率领两千步兵、骑兵救援薛安都等人,夜里抵达,北魏军队没有察觉。第二天,薛安都等人在陕城西南列阵。曾方平对薛安都说:“如今强敌在前,坚城在后,今天就是我们拼死的日子。你要是不前进,我就杀了你;我要是不前进,你就杀了我!” 薛安都说:“好,你说得对!” 于是双方展开激战。柳元怙领兵从南门击鼓呐喊着直冲而出,旌旗招展,气势盛大,北魏士兵大为震惊。薛安都挺身而出,奋力杀敌,鲜血凝固在肘部,长矛折断了,就换一把再冲进去,各路军队也一起奋勇作战。从清晨到午后,北魏军队大败,斩杀张是连提及将士三千多人。其余北魏士兵坠入黄河和壕沟而死的很多,两千多人投降。第二天,柳元景抵达陕城,责备投降的北魏士兵说:“你们本来是中原百姓,如今却为胡虏卖力,打不过才投降,为什么?” 投降的人都说:“胡虏逼迫百姓作战,后出发的人会被灭族,用骑兵逼迫步兵前进,没打仗就先死了,这是将军您亲眼所见的啊。” 将领们想把投降的人全部杀掉,柳元景说:“如今朝廷大军北上,应当让仁爱之声先传遍中原。” 于是把投降的人全部释放遣返,他们都喊着 “万岁” 离去。十一月甲午日,南朝宋攻克陕城。
庞法起等人进攻潼关,北魏守将娄须弃城逃走,庞法起等人占据潼关。关中地区的豪杰到处起兵响应南朝宋,四周山区的羌人、胡人也都前来归附。
宋文帝因王玄谟战败撤退,北魏军队深入国境,认为柳元景等人不宜单独进军,于是将他们全部召回。柳元景派薛安都担任后卫,领兵返回襄阳。文帝下诏任命柳元景为襄阳太守。
北魏永昌王拓跋仁攻打悬瓠、项城,攻克两地。文帝担心北魏军队进攻寿阳,召刘康祖率军返回。十一月癸卯日,拓跋仁率领八万骑兵在尉武追上刘康祖。刘康祖有八千部众,军副胡盛之想依托山地险要从小路撤退,刘康祖愤怒地说:“我们到黄河边寻找敌人,却没见到踪影;如今敌人自己送上门来,怎么能躲避!” 于是把战车结成营垒前进,向军中下令:“敢回头观望的人斩首,敢后退的人砍脚!” 北魏军队从四面围攻,南朝宋将士都拼死作战。从清晨到黄昏,杀死北魏士兵一万多人,鲜血淹没了脚踝,刘康祖身上受伤十处,斗志却更加旺盛。北魏把军队分成三部分,轮流作战、休息。恰逢日落时分刮起大风,北魏士兵骑着马背着草焚烧南朝宋的车营,刘康祖随时修补营垒的缺口。一支流箭射中刘康祖的脖子,他坠马而死,残余部众无法继续作战,于是溃散,北魏军队追击,几乎将他们全部杀光。
南平王刘铄派左军行参军王罗汉率领三百人驻守尉武。北魏军队抵达后,王罗汉的部下想向南依靠低矮的树林自保,王罗汉因接受命令驻守这里,不肯离开。北魏军队进攻并擒获了他,用锁链锁住他的脖子,让三郎将(北魏官职)看守;王罗汉夜里砍下三郎将的头,抱着锁链逃奔盱眙。
北魏永昌王拓跋仁进逼寿阳,焚烧劫掠马头、钟离两地,南平王刘铄环城固守。
北魏军队驻守萧城,距离彭城只有十几里。彭城的军队虽然人数多,但粮食少,太尉江夏王刘义恭想放弃彭城南撤。安北中兵参军沈庆之认为历城兵少粮多,提议组成 “函箱阵”(一种严密的车阵),用精锐士兵在外侧护卫,护送江夏王、武陵王及王妃、公主直接赶赴历城;分兵给护军萧思话,让他留守彭城。太尉长史何勖则想率军席卷物资逃往郁洲,从海路返回京城。刘