刘宋建国之初,北方除北魏外,还着北凉、西凉、西秦、夏、北燕五国;此外,阴山以北,还有强大的柔然部落。其夏和柔然部是魏的劲敌。刘宋虽只有半壁江山,对外却可专注,形势比较有利。其时,宋在河南还占有洛阳、虎牢、滑台、碻磝四个重镇,往东包括今山东省的大部分,济南、淄博、青州等城市都在宋的境内,建康离北方边境较远,所以比起东晋初年,它的局势要安稳得多。,魏明元帝死后,太子拓跋焘嗣位,是为世祖太武帝。太武帝初年(即宋元嘉初年),魏与夏、与柔然的战争连绵不断,宋文帝利用这时机,于元嘉六年向魏要求归还河南各地,声称否则要用武力夺取。太武帝听了,付之一笑而已。
北伐过程元嘉七年,宋文帝命到彦之率军北伐。四月,到彦之率五万之众,走水路由淮河入泗水,至七月才到须昌(今山东东平东),然后溯黄河西进。魏因碻磝、滑台、虎牢、金墉四镇兵少,主动撤出。到彦之军不费吹灰之力,便轻易收复四镇,又进屯灵昌津(在今河南延津县北)的南岸,使先头部队西进直抵潼关。宋军将士皆大欢喜,只有曾从檀道济作战的旧将王仲德不以为然,他料定魏军有计,一定是在等待冬季河上冰冻时反攻。魏崔浩更看穿到彦之的弱点:把几万人棑成东西二千里的一字长蛇阵,每一处只有几千人,力量非常薄弱。
到彦之沿河布防后,就带着王仲德回东平须昌的大本营去了。到了冬天,十月,魏军渡河反攻,攻下洛阳、虎牢。十一月,宋文帝命檀道济率兵伐魏。但是到彦之失了洛阳、虎牢,先已胆怯,引军从水路撤退,到了历城(今山东济南),便烧掉船只,丢掉铠甲,徒步退往彭城,魏兵追到历城。济南太守萧承之只有几百个兵,他命部下大开城门,敝出毫无戒备的样子。魏军大队人马到了城下,见了这等模样,估计必有伏兵,不敢进城而去。宋军这次冬季失败,损失惨重,府藏、武库为之一空。
元嘉八年(431年)正、二月间,他北上救滑台,进至历城,二十多天中,打了三十多仗,重创敌军。魏叔孙建用骑兵小部队袭击他的运输线,焚烧草谷。檀道济部缺粮,不能前进,滑台终于失守,守将朱脩之被俘。檀道济粮尽退兵,部下有人叛逃,把虚实告诉魏军,魏再发兵追击,宋军恐惧,随时可能溃散。檀道济在夜间宿营时,唱筹量沙,把剩下来的一点米铺在沙上,装出存粮极多的模样,魏军探知,以为降兵骗人,把他杀了。道济又故作镇静,命军士披甲,自己只穿便服,坐了轿子,慢吞吞地行走。魏军见了,以为是诱敌之计,不敢再追,檀道济方得全军而归。宋军北伐至此完全失败。
历史背景刘宋经第一次北伐大败,一时无力再举,遂整顿政治、恢复国力,以图再举。宋文帝北伐之志不曾懈怠,待国力稍见恢复后,立即着手进行北伐的准备工作。元嘉二十一年(444年),以左军将军徐琼为兖州刺史,由彭城(今江苏徐州)移镇须昌(今山东东平西南),以大将军参军申恬为冀州刺史,移镇历下(今山东济南西)次年,以武陵王、南豫州刺史刘骏为雍州刺史镇襄阳(今湖北襄樊)。接着,罢南豫州并入豫州,以南平王、南豫州刺史刘铄为豫州刺史,镇寿阳(今安徽寿县)。
元嘉二十三年(446年)三月,北魏高梁王拓跋那等人率大军攻入刘宋边境,侵扰兖、青、冀3州,并掳走百姓4000余人,牛6000佘头。宋文帝遂将北伐列入议事日程,向群臣谘询北伐之策。御史中丞何承天上《实边论》陈述己见,他提出如果想彻底解决北魏侵扰问题,应当“大田淮、泗,内实青、徐,使民有臝储,野有积谷,然后分命方、召,总率虎旅,精卒十万,使一举荡夷,则不足稍勤王师,以劳天下”。又说:“奇兵深入,杀敌破军,苟陵患未尽,则困兽思斗,报复之役,将遂无已”。因此,他主张宜安边固守即所谓“坚壁淸野,以俟其来,整甲缮兵,以乘其敝”。应该说,何承天的意见,较为切合刘宋对魏战争的实况。但宋文帝志在北伐拓境,未能采纳何承天的安边之策。彭城太守王玄谟迎合宋文帝,屡上疏陈述北伐,却大为宋文帝宠信。
王玄谟字彦德,喜欢空谈兵事。他喜欢谈,宋文帝喜欢听,听得人神时还对左右说广听玄谟所陈,令人有封狼居胥意御史中亟袁淑会拍马屁,便说陛下席卷赵魏之后,定要封禅泰山,臣逢千秋难得的机会,愿意写上一篇《封禅书》。文帝听了大为高兴,似乎中原已经回到了宋朝的版图。
元嘉二十五年,宋文帝以彭城地当南北要冲,以武陵王刘骏为安北将军、徐州刺史,镇彭城。次年,以竟陵王刘诞为后将军、雍州刺史,镇襄阳。因襄阳为临魏境军事重镇,朝廷“欲广其资力,乃罢江州军府,文武悉配雍州,湘州入台税租杂物,悉给襄阳”。这些措施都是为大举北伐而做的准备工作。
元嘉二十七年(450年)二月,北魏太武帝拓跋焘亲率大军10万南进,刘宋陈、南顿2郡太守郑琨,汝阳、颍川2郡太守郭道隐弃城而逃。拓跋焘围攻悬瓤(今河南汝南),守将陈宪率不足千人的守军奋力抵抗。魏军围攻40余日不能破城。刘宋救兵将至,拓跋焘遂撤围北还。
北魏撤军之后,宋文帝决定立即大举北伐。
战前准备1、东路军6万人由辅国将军、青、冀2州刺史萧斌为统帅,以宁朔将军王玄谟率太子步兵校尉沈庆之、镇军谘议参军申坦等水军1万为先锋,经淮、泗入河,进攻镐礅、滑台等地。镇军将军、徐、兖2州刺史武陵王刘骏率水陆继进,并兼统东路青、冀、徐、兖4州之军。
2、中路军以太子左卫率臧质率东宫禁兵,帅骁骑将军王方回、建武将军刘康祖、右军参军梁坦等步骑10万,直趋许昌(今河南许昌)、洛阳。豫州刺史、南平王刘铄率所部后继配合。
3、西路军以雍州剌史随王刘诞为统帅,率所部进攻弘农(今河南灵宝北),直向长安(今陕西西安西北),梁、南秦、北秦三州刺史刘秀之统率所部袭扰汧(山名,在今陕西陇县西南)、陇(山名,在今陕西陇县至甘肃平凉一带)一带,威胁长安。
此外,宋文帝又特派太尉、江夏王刘义恭进驻彭城,统一调度诸军。
刘宋朝廷为补充兵力的不足,从尚书左仆射何尚之议,大发青、冀、徐、豫、二兖六州民丁,三丁抽一,五丁抽二,凡所发民丁,“缘江五郡集广陵,缘淮三郡集盱眙”。又募天下弓弩手,若有马步众艺武力之士应募者,加以厚赏。宋廷为了筹足军资,下令扬、南徐、兖、江4州富民家资满50万,僧尼满20万者,“并四分换一,过此率计,事息即还”。从刘宋政权在战争开始时所采取的这些措施,可以看出刘宋不仅在谋略上没有经过仔细的筹划,而且北伐的兵力和财力的准备,也是很不充分的。
北伐过程宋元嘉二十七年(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余日,盱眙岿然不动。二月二日,太武帝因北魏军中多疾疫,又有人告以宋廷命彭城守军断其归路,并遣水军自海入淮来攻,遂撤盱眙之围北还。
魏军路过彭城时,刘义恭畏惧不敢截击,魏军驱迫掳掠来的民户万余口宿于彭城几十里处的安王陂,诸将皆请出击,义恭不许。次日,宋文帝诏令义恭全力追击魏军,义恭才遣将追击。魏军已得知此讯,将万余口百姓全部杀掉,平安撤回魏境。这场持续半年多的宋魏战争,以刘宋失败而告结束。
胜败原因刘宋元嘉末年的宋魏战争,以刘宋的主动北伐而开始,又以刘宋的最后失败而告终。刘宋不仅没有能收复河南失地,反而使魏军长驱直入,大片领土遭魏军蹂躏。北魏在战争中,采取的是前期防御、后发制人的战略方针,兵锋南向,饮马长江是它的既定目标。因而在时机成熟之后,北魏立即以数十万骑兵反击,扫荡刘宋江淮6州之地,直逼刘宋京师建康,宋军无力反击,魏军最后主动撤军。魏军是这次战争胜利的一方,刘宋是失败的一方。
这次战争以南败北胜的结局告终,不是偶然的。战争是政治、经济、军事、外交等多方面的较量,宋魏双方在这些方面有着明显的差异。先看刘宋,从政治上看,刘宋初年虽号称盛世,但东晋以来君权衰弱、权臣专制朝政的局面并没有根本改变,宋文帝本人就是在权臣徐羡之、谢晦等人策划的宫廷政变中登上皇帝宝座的。权臣功高震主的阴影,始终笼罩着宋文帝。如功高位重的名将檀道济,曾参与宫廷政变,而身遭猜忌被杀,这就导致了刘宋北伐时缺乏将才,不得不以庸才将领统兵。而且宋文帝唯恐军权旁落,不敢放手使用将帅,“而遥制兵略,至于攻日战时,莫不仰听成旨”。这实际上等于捆住了将帅手足,很难发挥他们的指挥才能。刘宋初年所谓“财阜人丰”的“小康”局面,只不过是与乱世比较而言,其经济实力不足以发动大规模的战争,所以临战还须向全境富民借贷军资。从军事上看,刘宋兵力十足,靠战征发庶民补充,缺乏军事训练,战斗力很差,加之刘宋军队多为水军、步兵,缺乏战斗力较强的骑兵,因此从整体上说,刘宋的军事实力远不如北魏强大。刘宋担任主攻方面的前锋王玄谟,本无大将之才,因其迎合文帝极力主张北伐,而被委以重任。但他既无谋略又无胆识,刚愎自用,临战不采纳正确意见,先是坐失战机,继而惊慌失措,弃军南逃,导致东路宋军溃败,牵动北伐全局,而宋文帝的遥控指挥,常常是“诏从远来,事势已异”,这些都成为刘宋北伐失败军事上的主要原因。
反观北魏,政治上虽不甚稳定,但毕竟完成了北方统一大业,表面上有一个安定的局面,而且北魏中央王权强大,对军队征调指挥自若。在经济上,北魏在农业畜牧业方面都采取了一些积极的措施,北方地大物博,又新破柔然,补充了大批人力物力。在军事上,北魏有数十万久经战阵的强悍骑兵,其战斗力很强。亲临前线指挥的太武帝富有军事天才,知己知彼,正确地采用后发制人的战略,选择有利于己方的秋季反攻,善于利用骑兵优势,敢于绕过坚城,迂回纵深穿插南下,此种战略战术大获成功。这些决定了这次战争以北魏胜利而告结束。
后人评价南宋的辛弃疾讽喻文帝北伐:“元嘉草草,封狼居胥,赢得仓皇北顾。四十三年,望中犹记、烽火扬州路。可堪回首,佛狸祠下,一片神鸦社鼓!凭谁问:廉颇老矣,尚能饭否?”
清代初期的王夫之评430年北伐:“元嘉之北伐也,文帝诛权奸,修内治,息民六年而用之,不可谓无其具;拓跋氏伐赫连,伐蠕蠕,击高车,兵疲于西北,备弛于东南,不可谓无其时;然而得地不守,瓦解猬缩,兵歼甲弃,并淮右之地而失之,何也?将非其人也。到彦之、萧思话大溃于青、徐,(南宋孝宗之)邵弘渊、李显忠大溃于符离,一也,皆将非其人,以卒与敌者也。文帝、孝宗皆图治之英君,大有为于天下者,其命将也,非信左右佞幸之推引,如燕之任骑劫、赵之任赵葱也;所任之将,亦当时人望所归,小试有效,非若曹之任公孙强、蜀汉之任陈祗也;意者当代有将才而莫之能用邪?然自是以后,未见有人焉,愈于彦之、思话而当时不用者,将天之吝于生材乎?非也。天生之,人主必有以鼓舞而培养之,当世之士,以人主之意指为趋,而文帝、孝宗之所信任推崇以风示天下者,皆拘葸异谨之人,谓可信以无疑,而不知其适以召败也。道不足以消逆叛之萌,智不足以驭枭雄之士,于是乎摧抑英尤而登进柔软;则天下相戒以果敢机谋,而生人之气为之坐痿;故举世无可用之才,以保国而不足,况欲与猾虏争生死于中原乎!”
元嘉二十九年(452年),宋文帝得知北魏发生政变,魏太武帝被杀,遂仓卒图谋再次北伐,并得鲁爽等人支持,但太子中庶子何偃认为北方数州经历过上一次北伐后还未复原,未是时机,上一次反对北伐的沈庆之再度进谏试图阻止北伐,但宋文帝都不接纳。五月丙申,宋文帝下诏北伐,命萧思话督冀州刺史张永攻碻磝,鲁爽、鲁秀兄弟与程天祚率四万荆州兵攻许洛,雍州刺史臧质攻潼关。青州刺史刘兴祖得知北伐,进言请派青冀二州共七千兵直指中山,占据河北要地,并取当地农作物补充军粮,若果成功,河南守军亦当溃败,率北伐主力的张永更可北渡黄河作支援。然而宋文帝一心只想收复河南,不肯听从。
经过大军出发后,守历城的建威将军申坦入黄河支援,张永司马崔训及齐郡太守胡景世都率青州兵和张永会合。当年七月,张永到达碻磝,并围城,接着兵分三路攻城,张永、胡景世统东路,申坦统西路而崔训统南路,可是仍久攻不下。八月辛亥日(9月4日)夜晚,魏军挖地道出城,纵火烧毁崔训营垒及攻城器具,两日后又烧了张永和胡景世的,不久魏军再破坏崔训进攻的通道。张永于是在当晚便撤围退兵,可是却没有告知其他人,于是令宋军大乱,被魏军攻击,死伤惨重。萧思话于是率兵增援,尽力攻城但仍失败。八月丁卯日(9月20日),萧思话见久攻不下,青、徐二州又歉收,遂在八月丁卯日率军退还历城,斩崔训共收张永、申坦下狱。
由鲁爽率领的西军进攻长社,守戍的秃发幡出逃,臧质则只出襄阳城郊,柳元景及薛安都进兵洪关;梁州刺史刘秀之也派萧道成进兵长安。北魏方面封礼进防弘农,儿乌干守潼关,拓跋辽守河内。不久,鲁爽在大索击败拓跋仆兰,进而攻虎牢,然而因为知道东军已退,于是和柳元景都退兵。萧道成等军亦见魏援将至,退还仇池。北伐再次无功而还。
影响此役作战地区局限,规模亦不大,对宋魏两国影响及不上两次北伐,魏及后还因宗爱再杀由他拥立的南安王拓跋余而引来一场由源贺等人领导的政变,终让文成帝继位。不过宋文帝对此役乘魏太武帝去世仍然失败大感不满,曾对萧思话下书:“北虏已经从战争中获利了,而现在快进入隆冬季节,若果他们敢来送死,我们兄弟父子就要亲自抗击了。说到这里又更愤怒了!可以将这诏给张永和申坦看。”更向刘义恭说:“早知道诸将是这样子,我就亲自持刀在他们后面督战了。现在后悔也来不及了!”不过,次年宋文帝就因太子刘劭的政变而丧命,由其领导的北伐亦告终结。