慕容恪去世了,桓温终于等来了机会。太和四年(369)三月,晋大司马桓温上书朝廷,要求北伐前燕,并建议徐州、兖州刺史郗愔带领京口兵、豫州刺史袁真带领豫州兵和他一同北伐,受他节制调度。桓温的荆州兵加上京口兵、豫州兵,这是晋的三大主力部队,桓温是打算倾全国之力出师北伐,他是志在必得。如今晋廷是他说了算,他的提议自然得到批准。
郗家在京口(今江苏镇江市)深耕几十年,京口兵是郗鉴当年把北方流民组织起来,加以严格训练,才逐渐形成的一支战斗力强、纪律严明的劲旅。桓温经常说:“京口酒可饮,兵可用。”他对这支部队垂涎三尺,一直想据为己有,对郗愔久居京口非常不满。
但郗愔政治头脑稍差,他得到北伐命令后也是心潮澎湃,准备大展身手,还给桓温写了一封信,表示要与他共辅王室,收复中原。郗愔的儿子郗超当时在桓温府做参军,和桓温关系密切,很了解桓温的心思。他看到父亲写给桓温的信后,当即撕碎,又模仿父亲笔迹重新写了一封。“郗愔”在这封信中说自己年老多病,希望离职休养,并请桓温统领自己的部队。桓温见信后非常惊喜,当即建议朝廷调任郗愔为会稽内史——这是个肥差——桓温本人则亲自兼任徐、兖二州刺史,统领京口兵。
太和四年(369)四月一日,是个好日子,桓温率领五万大军从姑孰出发,文武百官前来饯行,桓温威风凛凛,志得意满,准备要一举收复中原。
桓温从兖州走水路北上,郗超说:“到临漳路途遥远,汴水较浅,水路运粮会有困难。”但桓温听不进去。
不久,桓温抵达了一个叫金城(今江苏句容市北)的地方,他命大船停下,然后登陆上岸。他对这个地方太有感情了,当初他做琅琊内史的时候经常视察金城,还在河岸边种下了不少柳树,转眼三十多年过去,当年的小柳树苗已经长成参天大树,可达十围粗,而当年他只有二十岁左右,正是风华正茂的好年纪,如今他已经五十八岁了。岁月不饶人,桓温抚摸着裂痕斑斑的黑树皮慨然长叹:“木犹如此,人何以堪!”不觉间已经泪流满面。这就是著名的“桓公叹柳”的故事。
桓温率军继续北上,六月抵达金乡(今山东金乡县北)。恰逢大旱,水路无法继续行军,桓温命冠军将军毛虎生在钜野(今山东巨野县)挖掘出三百里运河,使得济水和汶水相接,这条运河被称为“桓公渎”。桓温率军队由清河进入黄河,舰船相连,绵延数百里。
桓温派建威将军檀玄进攻湖陆,生擒前燕守将宁东将军慕容忠。
面对晋军的攻势,慕容暐任命下邳王慕容厉为征讨大都督,率军两万迎战,但被晋军打得大败,慕容厉只身逃走,高平郡太守徐翻投降。晋前锋邓遐和朱序在林渚又击败了前燕将领傅颜。慕容暐派乐安王慕容臧率军抵抗,又大败,他急忙派散骑常侍李凤前往前秦求救。
七月,桓温率军抵达枋头(今河南浚县东南),慕容暐和太傅慕容评等人十分惊慌,他们一看桓温果然名不虚传,再顽抗下去可能会被活捉,便计划向北逃回旧都龙城去。
慕容垂不同意逃走,他说道:“请允许我带兵去攻打晋军,如果失败,再走也不迟。”慕容暐和慕容评一听,也没有其他更好的办法了,只有让慕容垂一试,于是任命慕容垂为使持节、南讨大都督,另外任命慕容德为征南将军,率军五万,共同迎击桓温。慕容垂又请求让司徒左长史申胤、黄门侍郎封孚、尚书郎悉罗腾一同前往,得到批准。
为保证万无一失,慕容暐同时派散骑侍郎乐嵩去前秦请求救援,承诺把虎牢关以西的土地割给前秦。在王猛的劝说下,八月,苻坚派将军苟池、洛州刺史邓羌率两万将士去救援,抵达颍川后驻扎,并派人告知前燕。
封孚问申胤道:“桓温军容整齐,士气高涨,为什么他停驻在堤岸之下不出击?他有什么打算呢?”申胤回答道:“如果仅从表面上看,桓温似乎会有所作为,但以我观察,桓温成功不了。这是为什么呢?因为司马氏衰微,桓温专权,一支独大,有吞并其他家族势力的趋势,这些世家大族必然会从中作梗,不让桓温的胜利继续下去。桓温性格多疑,不善于冒险突击,只求稳中求胜,时间一长,军粮运输就会出现问题,到时候他会一败涂地。”
桓温让降将段思做向导。前燕尚书郎悉罗腾与晋军交锋,活捉了段思,之后悉罗腾和虎贲中郎将染干津又杀死了桓温的部将李述,晋军士气受到影响。
当初,桓温命豫州刺史袁真攻打谯郡、梁国,开凿石门(今河南荥阳市北),使睢水和黄河连通,用来运输军粮。临行前,桓温对袁真再三叮嘱开凿石门通道是大军的生命线所系,要袁真务必完成任务,袁真当即允诺。袁真率军奋力攻下了谯郡和梁国,但却无法凿开石门,水运受阻。
前燕也意识到了石门的重要性。九月,慕容德率骑兵一万、兰台侍御史刘当率骑兵五千赶赴石门,阻挡袁真的开凿工程,袁真部队受阻。与此同时,前燕豫州刺史李邦率领五千人截断了桓温的粮道。
慕容德派将军慕容宙率一千精骑做前锋,和晋军正面交锋。慕容宙设三处伏兵,然后让两百骑兵前去挑战晋军,晋军一到,燕军就被“吓得”逃走,晋军追击,中了埋伏,死伤惨重。
桓温屡屡失手,军粮也要吃尽,又得到前秦军队即将到来的消息,他觉得这仗是没法打下去了。
太和四年(369)九月十九日,桓温命令烧毁舟船,让士兵脱掉铠甲,抛弃辎重,从陆路轻装撤退。桓温从东燕郡(今河南延津县东北)到了仓垣,为了防止前燕在河里下毒,晋军自己开挖水井吃水,就这样一路狂奔了七百多里。
前燕的将军们要求派兵速速追击,慕容垂说道:“不急,桓温很谨慎,他退兵的时候一定会让精兵断后,我们马上追击讨不到便宜。等他们走了一段路后筋疲力尽了,又发现后面没有追兵,思想一定会松懈,到时候我们全力追击,一定会大获全胜。”于是慕容垂亲率八千精骑远远地跟着桓温的队伍前行。
过了几天,慕容垂下令道:“全速进攻桓温!”前燕军催动战马狂奔,在襄邑(今河南睢县)追上了桓温的主力部队,这时候慕容德先期率领的精骑四千人已经埋伏在襄邑东的山涧中了。慕容垂与慕容德都是猛将,他们两面夹击,这时候桓温军已经走得筋疲力尽,加之士气低落,大败,被杀死三万多人。桓温率残兵到达谯郡,突然前秦的苟池、邓羌又杀将出来,桓温又损失万人。
十月二十二日,桓温率领仅剩的万余名残兵败将到达了山阳(今江苏淮安市)。
桓温的这次北伐是他的第三次北伐,也是最后一次。这次败仗,史称“枋头之战”。
桓温遇到了生平从未有过的大败仗,非常愤怒,为了转移朝廷众臣的焦点,他把这次战败的责任归咎于石门的水运通道没有打通,于是上书朝廷,要求把袁真贬为平民。袁真自然不认账,也上书喊冤,认为这是桓温诬陷自己。朝廷自然是听桓温的。袁真一气之下在寿春反晋,投降了前燕,并请求前燕派兵援助。
实事求是地分析,袁真没有打通石门通道,自然是要负责,桓温上书把他贬为平民也不算亏了他,认了就算了,以后还有机会复出。但袁真也是个急脾气,他竟然选择了投降前燕,人生就没有了归途。袁真是不是故意不打通石门通道?这个不好臆测。
秘书监孙盛写的《晋春秋》里,真实记载了桓温的枋头之败。桓温看到此书后暴怒,对孙盛的一个儿子说:“我在枋头确实失利了,但还不至于像你父亲说的那样,如果这部书流传出去,你要考虑你满门的安危!”
孙盛的儿子一听这可不得了,赶忙去找父亲孙盛,要他修改。当时孙盛年龄已经很大了,儿孙绕膝,但他有一身傲骨,当场拒绝了桓温的修改要求。孙盛的儿子们得到消息,全部跪倒在他面前,痛哭流涕,要求他以家族百余口的性命为重,修改对枋头之战的记录。孙盛被儿子们的行为气得胡子撅得老高,坚决不答应。儿子们没办法,就私下里对书进行了修改,但之前孙盛已经抄写了一部并送到境外。后来晋孝武帝收购天下奇书时,从辽东人手里够得此书,于是《晋春秋》就有了两种版本并存于世。