宋元嘉二十七年(450年)七月,当宋魏战争刚刚开始的时候,宋处于战略进攻,北魏处于战略防御的地位。在战争初期,刘宋三路大军进展顺利,取得了程度不同的胜利。
七月中旬,宋东路军向魏军发起攻击,青、冀2州刺史萧斌部下建武司马申元吉率军猛攻镐礅,北魏碻磝戍主、济州刺史王德弃城逃跑,宋军占领碻磝。与此同时,萧斌遣将军崔猛进攻魏青州剌史张淮之镇守的乐安(今山东广饶北),张淮之亦弃城而逃。
宋军又攻占乐安。萧斌进驻碻磝,亲临前线指挥,命王玄谟部沿河西攻滑台。王玄漠命钟离太守垣护之领百舸为前锋,进占滑台西南120里处的石济津(黄河渡口),全军进攻滑台。王玄谟军士卒众多,器械精良,魏滑台岌岌可危。
同时,豫州剌史刘铄所率中路军,也向魏境展开进攻。刘铄命中兵参军胡盛之、到坦之分两路会攻长社(今河南长葛东)。魏长社戍主、荆州刺史鲁爽败走,宋军攻克长社。接着,宋幢主王阳儿、张略等进据小索(古城名,在今河南荥阳)。
北魏豫州刺史拓跋仆兰闻知,率步骑2000从大索(古城名,在今河南荥阳,距小索城四里许)阻击宋军,被王阳儿击败。到坦之等进占大索,仆兰逃奔虎牢。于是,刘铄又派安蛮司马刘康祖率军为到坦之部后继,合军进攻虎牢。
当宋东、中两路军发起进攻时,西路军积极配合。八月,雍州剌史刘诞派中兵参军柳元景率振威将军尹显祖、奋武将军鲁方平、建武将军薛安都、略阳太守庞法起、广威将军田义仁等众军,自襄阳分头北进。闰十月,西路军大败魏军,攻占弘农(今河南灵宝北)。随后,薛安都、鲁云平、尹显祖等人进攻魏陕城(今河南三门峡西)。
北魏洛州刺史张是连提率步骑2万赴援,与宋军展开激战。薛安都等大败魏军,斩首3000佘级,俘虏2000余人。攻克陕城,阵杀魏军统帅张是连提。西路军另一部庞法起军在薛安都等人进攻陕城之时,率军一举攻占潼关。这时“关中诸义徒并处处锋起,四山羌、胡咸皆请奋”。西路军的胜利,使北魏关中摇动,这对宋军的北伐非常有利。
当刘宋各路北伐大军进展顺利之时,东路军王玄谟部以精锐之师,围攻滑台数十日之久,却未能攻克。玄谟军围攻滑台之初,众将士以城内多茅草房,建议用火箭射城内,引燃茅房,使城内军民惊慌,宋军乘势攻城。玄谟不许。十月,北魏救兵将至滑台,钟离太守垣护之建议强攻,以便迅速破城。
他写信给玄谟说:“昔武皇(指刘裕)攻广固,死没者亦众。况事殊曩时,岂得计士众伤疲,愿以屠城为急”。玄谟又不采纳。众将士再建议发车为营,以抵抗魏骑兵救援,玄谟仍拒不采纳。王玄谟一再拒绝正确的意见,多次失去战机,屯兵滑台近3个月而无所获。
闰十月初七日,魏太武帝大军进至枋头(今河南浚县西,位置在滑台以西古黄河北岸),立即派殿中尚书长孙真率骑兵5000自石济津渡过黄河,切断宋军退路,以防止王玄谟军逃跑。又派关内侯陆真乘夜率数人潜入滑台城,抚慰守城将士,并登城察看宋军动静,然后连夜回营还报太武帝。
次日,太武帝亲临前线,率大军渡河,直逼宋军。魏军众号百万,鞞鼓之声,震动天地,军势甚盛。王玄谟见北魏大军逼近,惊慌失措,弃军逃跑。宋军失去主将,阵势大乱。魏军乘势进攻,斩首万余级,缴获军资器械无数。
太武帝进驻东平(今山东东平东)。魏军遂以缴获宋军的战船,用铁索相连,在黄河上组成3道封锁线,企图截断滑台以西垣护之率领的宋军。王玄谟败逃,顾不上告知垣护之,因而垣护之得知宋军败退时,退路已被魏军截断。垣护之急命部下乘河水迅猛,顺流而下,如遇拦截铁索便以长斧砍断。在垣护之率领下,宋军将士奋勇作战,全军冲破封锁线退还,仅损失一艘战船。
王玄谟狼狈逃回碻磝,手下将士死亡殆尽。东路军主帅萧斌大怒,欲将王玄谟斩首,经太子步兵校尉沈庆之力劝乃止。萧斌见前锋已败,准备亲率主力固守矿礅。沈庆之劝他说:“夫深入寇境,规求所欲,退败如此,何可久住。
今青、冀虚弱,而坐守孤城,若虏众东过,青东非国家有也”。正在这时,宋文帝诏书至,不许萧斌后退。沈庆之仍坚持退军说;“阃外之事,将所得专,诏从远来,事势已异”。于是萧斌重新部署诸军,以王玄谟守镐礅,申坦、垣护之守清口(今山东东平西,为清水入黄河之口),自率诸军还驻历城(今山东济南西)。
这时东路军的失败,已成定局。此后,总统北伐军事的太尉刘义恭以镐礅孤城,必不可守,召令王玄谟退军,碡礅落入魏军手中。
宋文帝认为东路军败退,魏兵深入南境,西路柳元景等军不宜独进,遂令其撤退。于是弘农、陕城、潼关又为魏占有,西路军所取得的辉煌成果,遂付之东流。刘宋东路军的败退,实际上影响了整个北伐战局,此后北魏发起全面进攻,刘宋则由全面进攻转为全面防守。
魏军反攻初胜后,太武帝遂命诸将分兵5路大举南下:
1、征西大将军、永昌王拓跋仁自洛阳向寿阳(今安徽寿县);
2、尚书长孙真向马头(今安徽怀远南);
3、楚王拓跋建向钟离(今安徽凤阳东北);
4、高凉王拓跋那自青州(魏青州治今山东广饶)向下邳(今江苏邳县西南);
5、太武帝亲率主力自驻地东平(今山东东平东)向邹山(今山东邹城东南)
十一月初,太武帝大军进攻邹山,宋戍主、鲁阳阳平2郡太守崔邪利投降。太武帝进驻邹山。
与此同时,楚王拓跋建军进驻彭城门户萧城(今安徽萧县西北),另军步尼公进屯彭城另一门户留城(今江苏沛县东南)。镇守彭城的宋武陵王、徐兖2州刺史刘骏与驻在彭城节度北伐诸军的江夏王、太尉刘义恭派参军马文恭、军主嵇玄敬率军分别进至萧城、留城,观察魏军的动向。马文恭、嵇玄敬2军先后与魏军遭遇,马文恭军大败,文恭只身逃回。
嵇玄敬军由于当地百姓的协助,取得胜利,魏军遭到失败。当时,萧城魏军距彭城仅10里之隔,彭城守军虽多,但军粮匮乏,形势十分危急。刘义恭欲弃城南逃,安北长史、沛郡太守张畅力谏不可。
他说:“今城内乏食,百姓咸有走情,但以关扃严固,欲去莫从耳。若一旦动脚,则各自散走,欲至所在,何由可得。今军食虽寡,朝夕犹未窘罄,量其欲尽,临时更为便宜,岂有舍万安之术,而就危亡之道”。刘骏认为张畅所言有理,也劝义恭留镇彭城。刘义恭才决意坚守彭城。太武帝率大军进至彭城,宋军据城固守,魏军不能克。
魏永昌王拓跋仁率骑兵8万,自洛阳南进,连克宋悬瓠、项城(今河南沈丘),直趋寿阳。宋文帝恐镇守寿阳的豫州剌史刘铄被围,遂急令已向虎牢的安蛮司马刘康祖返回寿阳。康祖得令后火速回师,在寿阳北数十里处,被拓跋仁的8万大军追及。
康祖军仅有8000之众,军副胡盛之建议傍山依险,从小路返回寿阳。康祖大怒,说:“寇今自送,不复远劳王师,犬羊虽多,实易摧灭。吾兵精器练,去寿阳裁数十里,援军寻至,亦何患乎”。遂命将士结车营沿大道向寿阳进发。魏军仗恃人多,四面夹攻宋军,康祖率军奋战一天一夜,杀敌万余人。
魏军又分为3批,轮番进攻,并以马匹运草火烧宋军车营,康祖激励将士,拼死决战,终因寡不敌众,全军覆没。康祖身被10创,中流矢坠马而死。北魏拓跋仁军围攻寿阳,并分兵袭扰宋马头、钟离等地。宋刘铄命将士烧掉寿阳四周庐舍,凭坚城固守。
十一月底,魏军各部进抵淮水一线。太武帝见彭城、寿阳等坚城急攻难下,遂决定置宋孤城不顾,渡淮南进,兵锋直指长江。
十二月初一日,北魏诸军渡淮南进:高凉王拓跋那出山阳(今江苏淮安)、永昌王拓跋仁出横江(今安徽和县东南)、中书郎鲁秀出广陵(今江苏扬州),太武帝自率大军直趋瓜步(今江苏南京六合东南瓜埠)。魏军未带军粮,沿途本以抄掠为食。渡淮后得知宋盱眙(今属江苏)城有储粮,便猛攻盱眙。
盱眙太守沈璞与辅国将军臧质奋力抵抗,魏军攻城不下,便绕城而过,继续南进。魏军沿路烧杀抢掠,刘宋许多城邑守将望风奔逃。十二月十五日,太武帝军抵达瓜步,与建康隔江而对。
魏军到达长江北岸后,大拆民房,割苇造筏,声言渡江。建康震动,宋廷上下一片恐慌。宋文帝命令建康内外戒严,悉发丹阳(治建康)地区丁壮为兵,王公以下子弟皆从役。领军将军刘遵考等将兵分守建康津要,派水军沿江巡逻,“上接于湖,下至蔡州,陈舰列营,周亘江畔,自采石至于暨阳,六七百里,船舰盖江,旗甲星烛”。
文帝又命太子刘劭总统水军,出镇石头城(今南京城西),丹阳尹徐湛之守石头仓城,吏部尚书江湛兼领军,总统军事。文帝悬重赏购太武帝君臣首级,斩太武帝首级者,封八千户开国县公,赏布绢各万匹,金银各百斤。又募人将毒酒置江北空村中,欲以毒死魏军将士。
宋文帝刘义隆登石头城北望,面有忧色,长吁道:“如果檀道济还在,怎么会到这个地步!”
太武帝虽声言渡江,其实是虚张声势。魏军逞一时兵威,从黄河北岸一直打到长江北岸,连过刘宋青、冀、兖、徐、豫、南兖6州,沿途烧杀抢劫,遭到江淮人民的强烈反抗,他们纷纷以坚壁淸野对抗魏军。魏军抄掠无所得,军资奇缺,人马饥乏。
同时魏军屯长江北岸,前有长江天堑,没有强大水师无法渡江,后有刘宋6座州治坚城未破,难免有后顾之忧,而且沿路征战,士马损失过半,因而魏军此时已是强弩之末,退兵乃是大势所趋.
元嘉二十八年(451年)正月初一,太武帝大会群臣于瓜步山上。初二,魏军掠民户5万余户,焚庐舍撤军北还。魏军在返回途中为了解决军粮,再次围攻盱眙,守将臧质率领将士英勇抵抗。魏军先后筑长围,施以钩车、冲车等器具连续攻城,宋军以相应办法抵抗。魏军乃“肉薄登城,分番相代,坠而复升,莫有退者,杀伤万计,尸与城平”。
魏军猛攻20余日,盱眙岿然不动。二月二日,太武帝因北魏军中多疾疫,又有人告以宋廷命彭城守军断其归路,并遣水军自海入淮来攻,遂撤盱眙之围北还。
魏军路过彭城时,刘义恭畏惧不敢截击,魏军驱迫掳掠来的民户万余口宿于彭城几十里处的安王陂,诸将皆请出击,义恭不许。次日,宋文帝诏令义恭全力追击魏军,义恭才遣将追击。魏军已得知此讯,将万余口百姓全部杀掉,平安撤回魏境。这场持续半年多的宋魏战争,以刘宋失败而告结束。