鎮守壽陽的豫州刺史、皇四子南平王劉鑠受命從中路挺進許、洛,劉鑠派遣其部將中兵參軍胡盛之進汝南,到坦之進上蔡,進攻長社(在今河南長葛東)。魏長社戍主、荊州刺史魯爽棄城而逃。
既克長社,劉鑠又派遣幢主王陽兒、張略等進據小索。魏豫州刺史僕蘭從大索(在今河南滎陽)率領兩千騎兵前去進攻王陽兒,王陽兒打敗了魏軍。到坦之等向大索挺進,滎陽人鄭德玄、張和各自起義以響應王師,僕蘭逃往虎牢。這時王陽兒也率軍趕到,於是宋軍佔據大索;他們馬不停蹄,乘勝進逼虎牢。
劉鑠又派遣安蠻司馬劉康祖率軍增援到坦之。魏永昌王仁急忙率大軍救虎牢,到坦之寡不敵眾,敗退;魏又趁勢攻下懸瓠(因城北汝水屈曲如垂瓠而得名。在今河南汝南,時為南北戰爭要地,得之則置重兵戍守)和項城(在今河南沈丘,是宋陳郡治所)。
懸瓠、項城離壽陽不遠,劉義隆擔心南平王鑠不能固守壽陽,急令向許、洛挺進的劉康祖回救壽陽,劉康祖於是急回軍。在離壽陽數十里的尉武,他們遭遇永昌王所率領的八萬騎兵。尉武戍戍主是南平王劉鑠的部將左軍行參軍王羅漢。魏軍逼近時,他的手下只有三百人。眾人建議他放棄尉武戍,憑借旁邊的那片低矮的樹林以自固:「寇賊盛,三百人不足自守;南投樹林,寇賊若至,可脫身。」王羅漢認為身受王命,不能輕易撤退;最終魏軍攻尉武,守軍箭盡力屈,敗沒。魏軍法:活捉敵將,交給三郎大帥——即衛士,用鐵索鎖其頸脖。王羅漢被鎖住頸脖後,趁著夜色抱著鐵索砸死三郎大帥,然後抱著鐵索一直逃回盱眙。
魏軍已經佔據了尉武戍,這時趕來的劉康祖只有八千人。軍副胡盛之建議依據山險,抄小道奔向壽陽。劉康祖怒道:
「我等受命朝廷,清蕩許、洛,如今魏寇送上門來,不煩遠勞王師。犬羊雖多,不敵猛虎!我軍兵精器利,且離壽陽不過數十里,援軍不久將至,又有何憂!」
於是他下令軍中:「回望者斬,轉足者斬足!」
劉康祖令八千人結車營前進。這以戰車連成的活動的營壘,魏人的騎兵不能衝擊。於是魏軍四面夾攻,宋軍與之大戰,殺敵屍體撒落一路。魏軍仗著人多勢眾,分為三班且休且戰。此時日暮風急,魏軍騎兵抱來柴草火燒宋軍車營;劉康祖激勵將士,宋軍皆殊死作戰,無不一以當百。凡被魏軍火燒處,劉康祖隨即令將士填缺。
經過一日一夜的惡戰,宋軍共殺敵一萬餘人,過己軍總人數,但宋軍將士也多傷亡,戰場上血流沒踝。劉康祖身先士卒,身中十餘創;宋軍疲敝,但意氣不減。時值暗夜,劉康祖突然被流箭射中,流箭貫穿了他的頸項,劉康祖落馬而死。主帥一死,加之眾寡懸殊,其餘將士難以續戰,於是奔潰。魏軍縱兵掩殺,宋軍傷亡殆盡,自免逃歸者不過數十人。
戰後,魏軍為威懾宋軍將士,就把劉康祖的頭顱傳給宋彭城守軍看;彭城守軍看見劉康祖面色如生,更堅定了他們守城的意志。
魏軍在永昌王的率領下,進逼壽陽,他們一路上焚燒了馬頭、鍾離。南平王鑠率眾固守壽陽,魏軍不能攻克,不得不撤離壽陽,東進與拓跋燾會合。
冬十一月五日,拓跋燾率大軍到達鄒山。宋鄒山戍主、宣威將軍兼魯郡太守崔耶利寡不敵眾,被魏軍俘虜。登上鄒山,拓跋燾看到了秦始皇東巡時頌秦德的石刻,不以為然,就讓士兵推倒了它。與此同時,拓跋燾第五子楚王建自清水西進,進據蕭城(在今安徽蕭縣);步尼公自清水東進,駐紮留城(在今江蘇沛縣東南)。
面對如此嚴峻的形勢,駐守在彭城(在今江蘇徐州)的帝之第三子、徐兗二州刺史武陵王劉駿派遣他的參軍馬文恭率兵向蕭城,太尉江夏王義恭派遣他的軍主嵇玄敬率兵向留城抵禦魏軍,同時作為宋軍偵察。蕭城魏軍偃旗息鼓悄悄挺進,馬文恭偵察不明,猝然與之相遇,不能抵抗,不得不率眾投奔南山,魏軍隨即包圍了南山。兩軍交戰,勢不相當,馬文恭戰敗,隻身逃歸。嵇玄敬與魏軍相遇,因幢主華欽繼其後,魏軍以為是援軍,驚退,奔向苞橋。沛縣百姓焚燒苞橋,又趁著夜色在林中擊鼓吶喊,魏軍又誤以為是宋大軍到達,就爭渡苞水,苞水深,魏軍淹死者近半。
隨後拓跋燾率大軍到達蕭城,蕭城距彭城只有十餘里;而彭城作為宋淮北軍事重鎮,扼南北要衝,也是宋徐、兗二州治所。除了武陵王劉駿鎮守在這里外,作為眾軍節度的主帥太尉兼司徒江夏王義恭也把大本營設在彭城。
彭城軍力雖盛,但軍糧不足。作為主帥的義恭打算棄了彭城南逃,但害怕魏軍截斷南逃的退路,所以怎樣逃還舉棋不定。此前,太子步兵校尉沈慶之乘驛馬馳歸京都,還在途中,因碻磝告急,劉義隆派驛騎下詔阻止他,讓他前往碻磝援助王玄謨。沈慶之在回救途中,拓跋燾大軍已經南下,沈慶之受阻不能北上,只得滯留彭城,江夏王就任命他為太尉府中兵參軍。沈慶之對歷城有所瞭解,聽了江夏王準備撤離的打算後,作為主帥的參謀,他就建議以車營為函箱陣,精兵為外翼,擁戴二王及妃女投奔歷城,同時再分兵給護軍將軍蕭思話讓他鎮守彭城。而太尉長史何勖建議應席捲逃奔郁洲(古洲名。在今江蘇連雲港市東雲台山一帶,時在海中,周回數百里,清朝時因海岸擴張始與大6相連。相傳秦末田橫曾居此,故又名田橫島),然後再從海道回京都。
義恭去意已定,只是對沈、何二人的建議一時還難以取捨,於是召集群僚集思廣益。時魏大軍逼近,人心惶惶,眾人也不知二議有何長短。這時受皇帝命輔佐武陵王的安北長史兼沛郡太守張暢言反對二議:
「若歷城、郁洲有可達之理,下官豈敢不加高贊!但如今城內缺糧,百姓皆有奔走之願,只是因城門緊閉,欲走無途罷了。殿下一旦打開城門,百姓則將各自奔散,到那時再想投奔歷城、郁洲,怎可能啊!如今軍糧雖不足,但眼下尚未告盡,到了將盡時再作計議也不遲。哪有捨棄萬安之術,而踏上危亡之途的道理啊!若採納奔走之計,下官將把頸血濺在公的馬蹄上!」
眾人聞言面面相覷。武陵王原就不贊成撤退之議,聽了長史的話,也對叔父江夏王說:
「阿父既為全軍總統,決定去留,非道民所敢言。然而道民既為城主,若因撤退而損國威,延敵寇,其為愧疚,也太深了!若棄鎮奔逃,道民將無顏面對朝廷。道民願與此城共存亡!張長史之言不可變!」道民,武陵王劉駿的小名。
張暢的話既然已經說到了這種地步,而作為城主的侄兒又持此議,義恭這才停議撤退一事。起初,劉義隆擔心義恭不能固守彭城,因此備加叮囑。義恭也曾信誓旦旦地說:「臣雖不能臨翰海(即今蒙古國境內杭愛山。漢武帝時霍去病曾擊匈奴於此),濟居延(故城在今內蒙古額濟納旗東南,匈奴地),但也不致於有劉仲當年奔逃之恥!」事到如今,可見當初劉義隆的擔心並非多餘。
劉義隆擔心彭城人多食少,就派員外散騎侍郎徐爰乘驛馬到彭城瞭解糧食儲備的具體情況。到彥之北伐時,徐爰曾帶著皇上的意旨督戰;後來有將領以不能自專為由為自己開脫,於是這次北伐劉義隆就沒有讓中使隨軍宣旨。但王玄謨前鋒潰敗如此,劉義隆因此又心有悔意。現在徐爰在瞭解了彭城的糧食儲備情況後,就帶著米最(登載糧食儲備情況的簿冊)趕回京都,城內為慎重起見派騎兵護送他上道。已經逼近彭城的拓跋燾獲悉後,立即派出數百騎兵急追徐爰,想以此瞭解城內虛實。但魏軍慢了半拍,徐爰已過了淮河。
義恭聽說魏數百騎兵急追徐爰而去,擔心徐爰被俘失去米最,魏人得知城內底細,於是再次憂懼起來,因此再提撤退一事。次日,護送徐爰的騎兵返回,說他已經遠去,義恭這才放下心來。
十一月二十六日,拓跋燾率領大軍趕到彭城,隨即把劉宋重鎮彭城圍得如鐵桶一般。圍定了彭城後,拓跋燾就登上了城南亞父塚——張良墓,又在戲馬台(在彭城城南,高十仞,寬廣數百步,當年項羽所建)搭建氈屋以了望城內。
參軍馬文恭在蕭城戰敗後隻身逃歸的時候,其他官兵或陣亡或被俘,他的隊主蒯應也在被俘之列。此時蒯應已隨拓跋燾到達彭城,拓跋燾派他到彭城小市門向城內喊話:
「我君向安北將軍致意!我遠來疲乏,城內若有甘蔗及酒,可送來。」在年初汝陽戰敗後,武陵王劉駿就由安北將軍降號為鎮軍將軍,魏人還不知曉。甘蔗產於南方,北人以稀為貴,都愛吃。
「為稟告!」宋防城隊主梁法念答道。
接著蒯應又自陳有關蕭城敗況。梁法念問:
「虜主拓跋燾來否?」
「來了!」
「今何在?」
蒯應用手向西南方向指了指。
「魏軍有多少?」
「四十萬。」
梁法念隨即稟告武陵王。武陵王派人答道:
「路途勞累!今送酒二甕,甘蔗百根。聽說魏帶有駱駝,可送來!」
南人少見駱駝,認為它是奇獸:背有雙峰,能背負千斤物,日行三百里;凡裝載之時,必先跪下,載物未盡其量,終不起身。