之後,劉宋朝廷派南平內史臧質到壽陽,讓他與安蠻司馬劉康祖,共同率軍援救懸瓠(河南省汝南縣)。魏軍一直猛攻懸瓠(河南省汝南縣)城,參軍陳憲領兵防守,魏軍攻勢毫無起色,圍困了懸瓠(河南省汝南縣)城四十二天之後,因為任城公拓跋乞地真被臧質擊殺,北魏被逼暫時撤軍。
隨後,北魏拓跋燾寫了一封充滿諷刺意味的信,惹得劉義隆十分氣憤。沒過多久,北魏出現了崔浩被殺事件,劉義隆覺得有機可乘,於是下定決心北伐。
太子步兵校尉沈慶之,入朝進諫,他說:“宋魏兩軍實力懸殊,檀道濟曾經出軍無果,到彥之也是失利,現在劉宋也隻有王玄謨等幾員大將,能力並不如前二位,軍力也不強,不足暫且休養生息,待日後時機成熟再決定北伐。”
劉義隆非常生氣,說:“檀道濟是因為縱容敵人,不肯全力出擊,到彥之則是因為中途生病,影響了作戰。如今盛夏時節,河水上漲,河道通暢無阻,我軍一定能拿下河南四鎮,等到了冬天,魏軍南下,也會被生擒。”沈慶之依舊堅持,於是劉義隆讓徐湛之、江湛與他辯論。
沈慶之說:“治國就像治家一樣,耕田種地的事,應該去請教農夫,紡織的事該去問織女。陛下您要去討伐一個國家,卻和白麵書生們謀劃,這有什麼幫助呢?”劉義隆大笑。太子劉劭等人也上奏勸諫,劉義隆始終不聽。
拓跋燾聽說劉宋要大舉北伐,又寫了一封信給劉義隆,言辭相對上一封來說算是比較客氣了,然而並沒有阻止劉義隆的決心。
這次,劉宋舉全國之力北伐,上至王公、王妃、公主及朝廷官員、牧守,下至富民,每人都捐獻出金銀、玉帛及其他物品來援助國家。因為兵力不足,朝廷征召了青州、冀州、徐州、豫州、北兗、南兗六個州郡的青壯年,以每三個壯丁抽一人、每五個壯丁抽二人的比例進行征召,也可以花錢雇用他人代替參軍。命令到達之日起,十日內必須整理行裝出發。沿長江的五郡應征青年在廣陵集合,淮河一帶的三郡應征青年在盱眙集台。
同時,朝廷募集國內騎兵、步兵,加以厚賞。因為軍費、物資不足,朝廷令揚州、南徐州,南兗州、江州四州之中,凡是家產超過五十萬錢的,積蓄滿二十萬錢的和尚、尼姑,一律強行借出四分之一來供軍隊急用,戰事結束後歸還。
七月,北伐大軍出發。
東路軍由青、冀州刺史蕭斌督統,派寧朔將軍王玄謨與太子步兵校尉沈慶之、谘議參軍申坦率水軍,經過淮淮河、泗水進入黃河,進攻碻磝(山東省茌平縣)、滑台(河南省滑縣)等沿河地帶,徐州刺史武陵王劉駿,率軍隊配合。
中路軍由太子左衛率臧質,率東宮禁兵,與驍騎將軍王方回進攻許昌、洛陽,豫州刺史南平王劉鑠,率軍隊配合。
西路軍由雍州刺史隨王劉誕,與梁、南秦、北秦三州刺史劉秀之,率部眾威脅關中地帶。
此外,劉義隆派太尉、江夏王劉義恭進駐彭城,統一調度。
東路戰場:建武司馬申元吉率軍猛攻碻磝(山東省茌平縣),北魏濟州刺史王買德棄城逃跑,宋軍占領碻磝。將軍崔猛進攻樂安(山東省廣饒縣),北魏青州剌史張淮之亦棄城而逃,宋軍又攻占樂安,蕭斌與沈慶之留守碻磝。
寧朔將軍王玄謨率軍攻擊滑台(河南省滑縣),滑台城中房屋多是茅草屋,部將建議采用火攻。目光短淺的王玄謨卻直搖頭,說:“城中的一草一木日後都是我們的,為什麼燒了它們呢?”城中的魏軍害怕被火攻,所以趁此時機撤掉了茅草屋,挖掘洞穴防守。
當時黃河、洛水等地的百姓都爭先恐後地給宋軍送糧,而且,每天都有數千人前來投奔,王玄謨沒有保持這些人的原來的組織,而把他們拆分開,配給自己的親信使用。他發給每家一匹布作為犒勞,可是卻命令每家交出八百個大梨,於是,眾人失望。王玄謨進攻滑台數月,不能攻克,當大家聽說北魏的援軍就要來到時,部將們請求用馬車作為營壘,王玄謨沒有同意。
王玄謨一再拒絕正確的意見,屢失戰機,屯兵滑台(河南省滑縣)而毫無所獲。隨著時間的推移,軍心渙散,王玄謨接到前鋒坦護之的來信,說魏軍即將來襲,請他發動猛攻,並稱不應考慮士兵生死,攻克滑台後立即屠城,可是王玄謨並不理睬。
天氣轉涼之後,拓跋燾親率軍渡河南下,援救滑台。當時號稱百萬,戰鼓之聲震耳欲聾,魏軍殺來之後,王玄謨嚇得趕快撤退,宋軍早已經在這漫長的等待中消耗了鬥誌,一個個丟盔卸甲,被斬首一萬多人。王玄謨不戰而逃,丟棄的輜重物資堆積如山,軍艦也被魏軍收了去。
由於王玄謨逃跑時沒來得及通知前鋒坦護之,魏軍把王玄謨的軍艦用鐵鏈連起來,一共栓了三道,阻斷坦護之的退路,坦護之遇到鐵鏈就用斧頭砍斷,隻損失了一隻小艇,最後順利逃走。
王玄謨逃回之後,蕭斌打算殺了他,沈慶之替他求情,王玄謨才沒有被殺。蕭斌打算固守,沈慶之說認為如果北魏向東攻取,那麼碻磝將是一座孤城,當年朱修之守滑台(公元431年)被捕的一幕會繼續上演。這時候朝廷的使者來了,下達了不準撤退的命令。蕭斌召集大家商議,眾人堅稱應該留下來,沈慶之說:“宮外大事,將軍完全可以自行決斷。詔書從建康而來,皇上下詔書時並不了解目前這裏的形勢。閣下您有一個範增卻不用他,隻是這麼空談,有什麼意思呢?”蕭斌和在坐的各位將領都忍不住大笑,說:“沈公,您真有學問啊!”沈慶之厲聲說道:“你們雖然通古博今,卻不如我用耳朵仔細地學習。”於是,蕭斌派王玄謨戍守碻磝(山東省茌平縣),申坦、垣護之據守清口,自己率領各路大軍返回曆城(山東省濟南市)。
西路戰場:雍州刺史隨王劉誕,命令中兵參軍柳元景、振威將軍尹顯祖、奮武將軍曾方平、建武將軍薛安都、略陽太守龐法起,率軍進攻弘農(河南省靈寶市)。七十多歲後軍外兵參軍龐季明,進入盧氏(河南省盧氏縣),他說服了當地的士大夫和老百姓,薛安都等人順利從熊耳山通過,柳元景率軍緊隨其後。龐法起等各路劉宋大軍進入盧氏之後,斬殺了盧氏縣令李封,並且隨後攻克了弘農,之後向潼關(陝西省潼關縣)進軍。
朝廷任柳元景為弘農太守,柳元景派薛安都、尹顯祖率軍到陝城與龐法起等人會師,柳元景在後方征收糧草。陝城(河南省三門峽市)城池堅固,宋軍遲遲沒有攻下。北魏洛州刺史張是連提,自洛陽率領二萬士兵翻過崤山前去陝城增援,薛安都等人在陝城城南迎戰。
劉宋各路大軍抵擋不住北魏的騎兵,薛安都大怒,脫去戰盔,解下鎧甲,隻穿著紅色的無袖衫,並且摘下了戰馬的護甲,薛安都怒目而視,手持長矛,單槍匹馬,大聲呐喊著殺入魏軍陣中,一時間無人敢攔擋,魏軍的弓箭手也未能射中他。薛安都前後四次殺入敵陣,魏軍被殺死的人數不勝數。天黑後,另一名劉宋將領魯元保,率軍自函穀關而來,魏軍退走。柳元景派軍副柳元怙,率領二千步騎兵增援薛安都,深夜時抵達陝城城南,當時魏軍並不知情。