萧斌想固守碻磝,沈庆之说:“现在青州、冀州兵力虚弱,却死守这座孤城,如果北魏军向东推进,清水以东就不再是国家的领土了。碻磝孤立无援,会变成第二个没修好的滑台。”恰逢朝廷使者到达,不许萧斌等人退军。萧斌又召集众将商议,大家都认为该留守。
沈庆之说:“军事事务,将军有权自主决定。诏书从远方来,不了解当前形势。您有一个范增那样的人才却不会用,空发议论有什么用!”萧斌和在座的人都笑着说:“沈公竟然还懂学问!”沈庆之厉声说:“你们虽然懂古今事,却不如我靠经验学到的实在!”萧斌于是派王玄谟驻守碻磝,申坦、垣护之据守清口(今山东东平附近),自己率领其余军队返回历城(今山东济南)。
闰十月,庞法起等各路军队进入卢氏县(今河南卢氏),杀了北魏县令李封,任命赵难为卢氏县令,让他率领部众当向导。柳元景从百丈崖(今河南卢氏附近)领兵与各路军队在卢氏会合。庞法起等进攻弘农,闰十月十五日(辛未日),攻克弘农,活捉北魏弘农太守李初古拔。薛安都留守弘农。闰十月三十日(丙戌日),庞法起进军潼关(今陕西潼关)。
北魏太武帝命令众将分路进军:永昌王拓跋仁从洛阳赶赴寿阳(今安徽寿县),尚书长孙真赶赴马头(今安徽怀远),楚王拓跋建赶赴钟离(今安徽凤阳),高凉王拓跋那从青州赶赴下邳(今江苏邳州),太武帝亲自从东平(今山东东平)赶赴邹山(今山东邹城)。
十一月初五(辛卯日),北魏太武帝抵达邹山,刘宋鲁郡太守崔邪利被北魏军活捉。太武帝看到秦始皇留下的石刻,派人把石刻推倒,用“太牢”(牛、羊、猪各一头)祭祀孔子。
北魏楚王拓跋建从清水西进,驻守萧城(今安徽萧县);步尼公从清水东进,驻守留城(今江苏沛县东南)。武陵王刘骏派参军马文恭领兵赶赴萧城,江夏王刘义恭派军主嵇玄敬领兵赶赴留城。马文恭被北魏军击败。步尼公遇到嵇玄敬后,领兵赶赴苞桥(今江苏沛县西),想渡到清水西岸;沛县百姓烧毁苞桥,夜里在树林中击鼓,北魏军以为刘宋大军赶到,争相渡苞水(清水支流),淹死的人将近一半。
朝廷下诏任命柳元景为弘农太守。柳元景派薛安都、尹显祖先领兵到陕城(今河南三门峡)与庞法起等人会合,自己在后方督办粮草。陕城地势险要坚固,各路军队攻打不下。北魏洛州刺史张是连提率领两万士兵越过崤山(今河南洛宁西北)救援陕城,薛安都等人与北魏军在陕城南交战。北魏军出动冲锋骑兵,刘宋军抵挡不住;薛安都大怒,摘下头盔、脱下铠甲,只穿深红色无袖铠甲,战马也卸去防护装备,瞪着眼睛横持长矛,单枪匹马冲入北魏军阵。他所到之处无人能挡,北魏军两面射箭却射不中他。这样冲杀了好几次,杀死杀伤的北魏军数不胜数。
恰逢日落,刘宋别将鲁元保领兵从函谷关赶到,北魏军才撤退。柳元景派军副柳元怙率领两千步兵骑兵救援薛安都等人,夜里抵达,北魏军没有察觉。第二天,薛安都等人在陕城西南列阵。曾方平对薛安都说:“现在强敌在前,坚城在后,今天就是我们决死的日子。你要是不进攻,我就杀了你;我要是不进攻,你就杀了我!”薛安都说:“好,你说得对!”于是两军交战。柳元怙领兵从南门击鼓呐喊直冲而出,旌旗招展,北魏军十分震惊。薛安都奋勇冲锋,鲜血凝结在肘部,长矛折断了,换了一根再冲进去,各路军队一同奋战。从清晨到午后,北魏军大败,斩杀张是连提及将士三千多人,其余北魏军跳进黄河、壕沟淹死的很多,两千多人投降。
第二天,柳元景抵达陕城,责备投降的北魏士兵说:“你们本来是中原百姓,现在却为北魏尽力,战败才投降,为什么?”投降的人都说:“北魏逼迫百姓打仗,后出发的人要被灭族,用骑兵逼迫步兵前进,没开战就先死了,这是将军您亲眼所见的。”将领们想把投降的人全杀了,柳元景说:“现在王师向北进军,应当让仁爱的名声先传播开。”于是把投降的人全部释放遣送,他们都喊着“万岁”离去。十一月初八(甲午日),刘宋军攻克陕城。
庞法起等人进攻潼关(今陕西潼关),北魏守将娄须弃城逃走,庞法起等人占据潼关。关中豪杰四处起兵响应,各地山区的羌人、胡人也都前来归附。
宋文帝因王玄谟败退、北魏军深入境内,认为柳元景等人不宜单独进军,下令将他们召回。柳元景派薛安都断后,领兵返回襄阳。朝廷下诏任命柳元景为襄阳太守。
北魏永昌王拓跋仁攻打悬瓠(今河南汝南)、项城(今河南沈丘),攻克两城。文帝担心北魏军进攻寿阳(今安徽寿县),召刘康祖领兵返回。十一月十七日(癸卯日),拓跋仁率领八万骑兵在尉