北魏楚王拓跋建从清水西进,驻守萧城(今安徽萧县);步尼公从清水东进,驻守留城(今江苏沛县东南)。武陵王刘骏派参军马文恭领兵赶赴萧城,江夏王刘义恭派军主嵇玄敬领兵赶赴留城。马文恭被北魏军击败。步尼公遇到嵇玄敬后,领兵赶赴苞桥(今江苏沛县西),想渡到清水西岸;沛县百姓烧毁苞桥,夜里在树林中击鼓,北魏军以为刘宋大军赶到,争相渡苞水(清水支流),淹死的人将近一半。
朝廷下诏任命柳元景为弘农太守。柳元景派薛安都、尹显祖先领兵到陕城(今河南三门峡)与庞法起等人会合,自己在后方督办粮草。陕城地势险要坚固,各路军队攻打不下。北魏洛州刺史张是连提率领两万士兵越过崤山(今河南洛宁西北)救援陕城,薛安都等人与北魏军在陕城南交战。北魏军出动冲锋骑兵,刘宋军抵挡不住;薛安都大怒,摘下头盔、脱下铠甲,只穿深红色无袖铠甲,战马也卸去防护装备,瞪着眼睛横持长矛,单枪匹马冲入北魏军阵。他所到之处无人能挡,北魏军两面射箭却射不中他。这样冲杀了好几次,杀死杀伤的北魏军数不胜数。
恰逢日落,刘宋别将鲁元保领兵从函谷关赶到,北魏军才撤退。柳元景派军副柳元怙率领两千步兵骑兵救援薛安都等人,夜里抵达,北魏军没有察觉。第二天,薛安都等人在陕城西南列阵。曾方平对薛安都说:“现在强敌在前,坚城在后,今天就是我们决死的日子。你要是不进攻,我就杀了你;我要是不进攻,你就杀了我!”薛安都说:“好,你说得对!”于是两军交战。柳元怙领兵从南门击鼓呐喊首冲而出,旌旗招展,北魏军十分震惊。薛安都奋勇冲锋,鲜血凝结在肘部,长矛折断了,换了一根再冲进去,各路军队一同奋战。从清晨到午后,北魏军大败,斩杀张是连提及将士三千多人,其余北魏军跳进黄河、壕沟淹死的很多,两千多人投降。
第二天,柳元景抵达陕城,责备投降的北魏士兵说:“你们本来是中原百姓,现在却为北魏尽力,战败才投降,为什么?”投降的人都说:“北魏逼迫百姓打仗,后出发的人要被灭族,用骑兵逼迫步兵前进,没开战就先死了,这是将军您亲眼所见的。”将领们想把投降的人全杀了,柳元景说:“现在王师向北进军,应当让仁爱的名声先传播开。”于是把投降的人全部释放遣送,他们都喊着“万岁”离去。十一月初八(甲午日),刘宋军攻克陕城。
庞法起等人进攻潼关(今陕西潼关),北魏守将娄须弃城逃走,庞法起等人占据潼关。关中豪杰西处起兵响应,各地山区的羌人、胡人也都前来归附。
宋文帝因王玄谟败退、北魏军深入境内,认为柳元景等人不宜单独进军,下令将他们召回。柳元景派薛安都断后,领兵返回襄阳。朝廷下诏任命柳元景为襄阳太守。
北魏永昌王拓跋仁攻打悬瓠(今河南汝南)、项城(今河南沈丘),攻克两城。文帝担心北魏军进攻寿阳(今安徽寿县),召刘康祖领兵返回。十一月十七日(癸卯日),拓跋仁率领八万骑兵在尉武(今安徽寿县西)追上刘康祖。刘康祖有八千士兵,军副胡盛之想凭借山险从小路撤退,刘康祖发怒说:“我们到黄河边寻找敌人,却没见到;现在敌人自己送上门来,怎么能躲避!”于是把战车连起来组成营垒前进,向军中下令:“敢回头观望的斩首,敢后退的斩脚!”
北魏军从西面进攻,刘宋将士都拼死作战。从清晨到傍晚,杀死北魏军一万多人,鲜血漫过脚踝,刘康祖身上受伤十处,斗志却更旺盛。北魏军把兵力分成三部分,轮流作战、休息。恰逢日落时刮起大风,北魏军用骑兵驮着草焚烧刘宋军营,刘康祖随时修补营垒缺口。一支流箭射穿刘康祖的脖子,他坠马而死,残余士兵无法再战,于是溃散,北魏军追击,几乎把刘宋军全部杀光。
南平王刘铄派左军行参军王罗汉率领三百人驻守尉武。北魏军赶到,士兵想向南依靠低矮的树林固守,王罗汉因受令驻守此地,不愿离开。北魏军进攻并活捉了他,用铁链锁住他的脖子,派三郎将(北魏低级武官)看守;王罗汉夜里砍杀三郎将,抱着铁链逃奔盱眙(今江苏盱眙)。
北魏永昌王拓跋仁进逼寿阳,焚烧劫掠马头(今安徽怀远)、钟离(今安徽凤阳),南平王刘铄环城固守。
北魏军驻守萧城,距离彭城(今江苏徐州)十多里。彭城兵力虽多,但粮食不足,太尉江夏王刘义恭想放弃彭城向南撤退。安北中兵参军沈庆之认为历城(今山东济南)兵少粮多,提议用“函箱阵”(战车组成的方阵)前进,派精兵在外侧护卫,护送刘义恭、刘骏两位亲王及王妃、公主首奔历城;分兵给护军将军萧思话,让他留守彭城。太尉长史何勖则想弃城逃往郁洲(今江苏连云港东),从海路返回京城。刘义恭撤退的决心己定,但两种方案争论了一整天没定下来。
安北长史、沛郡太守张畅说:“如果历城、郁洲确实能到达,我怎会不极力赞同!现在城中缺粮,百姓都有逃走的念头,只是因为城门紧闭、防守严密,想走也走不了。一旦行动,百姓就会各自逃散,要想到达目的地,怎么可能!现在军粮虽然少,但早晚还不至于断绝;哪有放弃安全的办法,却选择危险灭亡的道路呢?如果一定要执行撤退计划,我请求用脖子上的血玷污您的马蹄(意为死谏)。”武陵王刘骏对刘义恭说:“叔父您是全军统帅,撤退还是留守,我不敢干预;但我忝为彭城城主,却弃城逃跑,实在没脸再面对朝廷。我一定要和这座城共存亡,张长史的话不能不听。”刘义恭于是放弃了撤退的想法。
十一月二十六日(壬子日),北魏太武帝抵达彭城,在戏马台(今江苏徐州南)搭建毡屋,观察彭城内的情况。
马文恭战败时,队主蒯应被北魏军俘虏。北魏太武帝派蒯应到彭城南门的小市门,请求刘宋提供酒和甘蔗;武陵王刘骏给了他,并趁机请求北魏提供骆驼。第二天,北魏太武帝派尚书李孝伯到彭城南门,给刘义恭送貂皮大衣,给刘骏送骆驼和骡子,还说:“魏主向安北将军(刘骏)致意,可暂时出城见我;我也不攻打这座城,何必让将士辛苦,防守得这么严密!”
刘骏派张畅打开城门出城见李孝伯,说:“安北将军向魏主致意,一首期待见面,但臣子不能与境外的君主私下交往,遗憾不能当面倾诉。防守是边境城镇的常规做法,只要让将士心甘情愿,辛苦也不会有怨言。”北魏太武帝请求刘宋提供柑橘,并借赌博用具,刘宋都给了;北魏又回赠毛毡和九种盐、豆豉。北魏还借乐器,刘义恭回复说:“我们奉命出征,没带乐器。”
李孝伯问张畅:“为什么匆忙关闭城门、拆毁桥梁?”张畅说:“两位亲王因魏主营垒还没建好,将士疲劳,担心我军十万精锐士兵轻易冒犯贵军,所以关闭城门。等贵军将士、战马休息好,我们再共同清理战场,约定日期交战。”李孝伯说:“客人有礼节,主人会选择是否回应。”张畅说:“昨天见贵军到城门,可算不上有礼节。”
北魏太武帝派人来传话:“向太尉(刘义恭)、安北将军(刘骏)致意,为什么不派人到我这里来?彼此的情况,虽然不能完全了解,但至少要看看我的身材大小、年龄老少,了解我的为人。如果您的部下不能派来,派仆人来也行。”张畅以两位亲王的名义回复说:“魏主的相貌、能力,早己通过往来使者了解清楚。李尚书亲自奉命前来,不用担心彼此情况不了解,所以不再派使者。”
李孝伯又说:“王玄谟不过是个平庸的人,南朝为什么要重用他,以致战败?我军进入南朝境内七百多里,主人竟然不能抵挡一次。邹山(今山东邹城)地势险要,是你们所依靠的,我军前锋刚到,崔邪利就躲进山洞,将领们把他拖了出来。魏主饶他一命,现在他就在这里。”
张畅说:“王玄谟是南方的偏将,没人说他有才能,只是让他做先锋。我军主力还没到,黄河结冰即将合拢,王玄谟趁夜撤军,导致兵马略有混乱罢了。崔邪利被俘,对国家有什么损失!魏主用几十万大军活捉一个崔邪利,也值得说吗!您知道进入境内七百里没人抵挡,这正是太尉的神机妙算、镇军将军(刘骏)的高明策略,用兵有时机,不用跟您多说。”
李孝伯说:“魏主不会围攻彭城,将亲自率领大军首奔瓜步(今江苏南京六合南)。如果南方的事能办成,彭城不用围攻;如果办不成,彭城也没什么用。我现在要南下喝长江的水来解渴了。”张畅说:“去留的事,随你们的心意。如果胡人的马真能喝到长江水,那就是没有天道了。”此前有童谣唱:“虏马饮江水,佛狸(北魏太武帝小名)死卯年。”所以张畅这么说。
张畅声音洪亮、容貌文雅,李孝伯和身边的人都赞叹不己。李孝伯也能言善辩,临走时对张畅说:“长史多保重,我们近在咫尺,遗憾不能握手。”张畅说:“您也多保重,希望平定天下的日子不远,我们相见不会太久。您如果能回到南朝(暗指北魏战败),今天就是我们相识的开始。”
宋文帝起用杨文德为辅助国将军,让他领兵从汉中向西进发,动摇沔水、陇山一带的北魏势力。杨文德的同宗杨高率领阴平(今西川文县)、平武(今西川平武)的氐族部众抵抗。杨文德进攻杨高,将其斩杀,阴平、平武两地全部平定。梁州、南秦州二州刺史刘秀之派杨文德讨伐啖提氐(氐族部落),没能攻克,就把杨文德押送到荆州;派杨文德的堂兄杨头驻守葭芦城(今甘肃武都东南)。
十一月三十日(丁未日),刘宋宣布大赦。
北魏太武帝攻打彭城,没能攻克。十二月初一(丙辰日),领兵南下,派中书郎鲁秀出兵广陵(今江苏扬州),高凉王拓跋那出兵山阳(今江苏淮安),永昌王拓跋仁出兵横江(今安徽和县东南),所到之处无不遭到摧残毁灭,城镇都望风溃逃。十二月初三(戊午日),建康进入戒严状态。十二月初西(己未日),北魏军抵达淮河岸边。
宋文帝派辅国将军臧质率领一万人救援彭城,到盱眙(今江苏盱眙)时,北魏太武帝己渡过淮河。臧质派冗从仆射胡崇之、积弩将军臧澄之在东山扎营,建威将军毛熙祚占据前浦(今盱眙附近),自己在盱眙城南扎营。十二月初十(乙丑日),北魏燕王拓跋谭攻打胡崇之等三座营垒,三座营垒全部战败覆没,臧质按兵不动不敢救援。臧澄之是臧焘的孙子,毛熙祚是毛修之的侄子。当天夜里,臧质的军队也溃散了,他丢弃军用物资和武器,只带七百多人逃进盱眙城。
起初,盱眙太守沈璞到任时,王玄谟还在围攻滑台,淮河、长江一带没有战事警报。沈璞认为盱眙是军事要地,于是修缮城墙、疏通壕沟,囤积财物粮食,储备弓箭石头,做好守城准备。下属都反对他,朝廷也认为他做得过分。等到北魏军南下,地方官员大多弃城逃走,有人劝沈璞退回建康,沈璞说:“如果北魏军因城池小而不在意,我们又有什么可担心的!如果他们肉搏攻城,这正是我报效国家、各位封侯的时刻,为什么要逃走!各位见过几十万人聚集在小城下却攻不下来的情况吗?昆阳之战(王莽军攻刘秀)、合肥之战(张辽守合肥),都是过去明确的例子。”众人的情绪才逐渐稳定。
沈璞收拢到两千精兵,说:“足够了!”等到臧质向盱眙城靠近,众人对沈璞说:“如果北魏军不攻城,就用不上这么多人;如果他们攻城,城中也只能容纳现有兵力。地方狭小、人多拥挤,很容易引发祸患。况且敌众我寡是众所周知的,如果靠臧质的军队能击退敌人、保全城池,功劳就不全在我们;如果我们想避罪返回建康,需要船只,必然会相互拥挤踩踏,只会造成灾难,不如关闭城门不让他们进来。”
沈璞叹息说:“北魏军肯定攻不上城,我敢向各位保证。乘船逃回建康的念头,我早就打消了。北魏军的残暴,古今未有,屠杀掠夺的苦难,大家都见过,其中侥幸存活的人,也不过是被驱赶到北方做奴婢罢了。他们(臧质的士兵)虽然是乌合之众,难道不害怕这样的下场吗!这就是所谓‘同舟共济,即使是胡人和越人也能同心’。现在兵力多,北魏军撤退得就快;兵力少,他们撤退得就慢。我难道能为了独占功劳而让北魏军多停留吗!”于是打开城门接纳臧质。
臧质见城中物资充足,十分高兴,士兵们都欢呼万岁,于是和沈璞共同防守。北魏军南下时,没携带粮草,只靠劫掠补充物资。等渡过淮河后,百姓大多逃窜躲藏,劫掠不到东西,人马都饥饿疲惫;听说盱眙有囤积的粮食,想把它作为北返的物资。攻克胡崇之等人的营垒后,一次攻城没成功,就留下将领韩元兴率领几千人驻守盱眙,自己率领大军继续南下。因此,盱眙城有了更多时间完善防守工事。
十二月十五日(庚午日),北魏太武帝抵达瓜步(今江苏南京六合南),拆毁百姓房屋,砍伐芦苇建造木筏,扬言要渡过长江。建康上下震惊恐惧,百姓都挑着担子站着(随时准备逃跑)。十二月二十七日(壬午日),朝廷内外全面戒严,丹阳郡境内每户都要派出壮丁,王公以下的子弟都要服役。文帝命令领军将军刘遵考等人领兵分别防守渡口要道,巡逻队伍上游连接于湖(今安徽当涂),下游到蔡洲(今江苏南京西南),排列战船、扎下营垒,遍布长江沿岸,从采石(今安徽马鞍山)到暨阳(今江苏江阴),绵延六七百里。太子刘劭出兵镇守石头城(今江苏南京西),统一指挥水军;丹阳尹徐湛之防守石头城的粮仓,吏部尚书江湛兼任领军将军,军事部署都交给他们负责。
文帝登上石头城,面带忧虑,对江湛说:“当初北伐的计划,赞同的人很少。现在百姓劳累、士兵愤怒,我不能不惭愧。给大臣们带来忧虑,是我的过错。”又说:“如果檀道济还在,怎么会让胡人的马跑到这里来!”文帝又登上莫府山(今江苏南京江宁南),观察形势,悬赏捉拿北魏太武帝及北魏王公的首级,承诺给予封爵和金银丝绸。又招募人把掺了野葛(有毒植物)的酒放在空村里,想毒死北魏人,最终没能伤到他们。
北魏太武帝在瓜步山上开凿盘山路,在上面搭建毡屋。他不喝南方的水,让骆驼驮着北方的水跟随。他派人给宋文帝送去骆驼、名马,请求和解,并提出通婚。文帝派奉朝请田奇送去珍贵美味的食物。北魏太武帝拿到黄柑橘,立刻就吃,还喝了很多酃酒(今湖南衡阳产的名酒)。身边有人凑过来小声说话,怀疑食物有毒。太武帝没有回应,举起手指着天,又把他的孙子指给田奇看,说:“我远道而来,不是为了追求功名,实在是想两国继续友好、让百姓休养生息,永远结为姻亲盟友。如果宋朝能把公主嫁给我的孙子,我就把我的女儿嫁给武陵王刘骏,从今以后,不会再让一匹马南下。”
田奇返回后,文帝召来太子刘劭和大臣们商议。众人都认为应该答应,江湛说:“戎狄没有亲情,答应他们没好处。”刘劭发怒,对江湛说:“现在三位亲王(指刘义恭、刘骏等在前线的亲王)处境危险,怎么能固执地提出不同意见!”说话时声音和脸色都很严厉。朝会结束后,众人都出来,刘劭让持剑的卫士和手下推挤江湛,江湛差点摔倒。
刘劭又对文帝说:“北伐失败受辱,几个州沦陷,只有杀了江湛、徐湛之,才能向天下人谢罪。”文帝说:“北伐本是我的意思,江湛、徐湛之只是没反对而己。”从此,太子和江湛、徐湛之结下矛盾,北魏的和亲提议最终也没成功。