太子太傅封孚问申胤说:“桓温兵力强大、士兵整齐,顺流直进,现在我们的大军只是在高岸徘徊,兵不交锋,没看到能消灭他们的道理,事情会怎样发展?”申胤说:“以桓温现在的声势,好像能有所作为,但在我看来,必定不会成功。为什么呢?晋室衰弱,桓温在国内专权,晋朝的朝臣未必都和他同心。所以桓温得志,是众人所不愿看到的,必定会有人阻挠破坏使他失败。再说,桓温骄傲而依仗人多,不善于应变。大军深入,遇到可乘之机,反而在中途悠闲自在,不趁机进军夺取利益,想持久作战,坐取全胜;如果粮食运输中断,军情暴露、形势不利,必定会不战自败,这是自然的道理。”
桓温让燕国投降过来的段思做向导,悉罗腾和桓温交战,活捉了段思;桓温派原后赵将领李述攻占赵、魏故地,悉罗腾又和虎贲中郎将染干津(胡三省注:染干,也是夷人姓氏,如同悉罗之类)攻击斩杀了李述;桓温的军队士气受挫。
当初,桓温派豫州刺史袁真攻打谯郡(今安徽亳州)、梁国(今河南商丘一带),打开石门(今河南荥阳北)来通水路运输,袁真攻下了谯、梁却没能打开石门,水路运输被阻断。
九月,燕范阳王慕容德率领一万骑兵、兰台治书侍御史刘当率领五千骑兵驻扎在石门,豫州刺史李邽率领五千州兵截断桓温的粮道。慕容德派将军慕容宙率领一千骑兵作为前锋,和晋军相遇,慕容宙说:“晋人轻率勇猛,害怕陷入敌阵,却勇于乘退追击,应当设诱饵引诱他们。”于是派二百骑兵挑战,把其余的骑兵分成三处埋伏。挑战的士兵还没交战就退走,晋兵追击,慕容宙率领伏兵攻击,晋兵战死的很多。
桓温作战多次失利,粮食储备又已耗尽,又听说秦兵将要到来,丙申日,焚烧船只,抛弃辎重、铠甲兵器,从陆路逃回。桓温从东燕(今河南延津东北)出发到仓垣(今河南开封东北),沿途凿井取水(胡三省注:汴水、济水都自北向南流,担心追兵在 upstream 投毒,所以凿井而饮),行进七百多里。燕国的将领们争相想追击,吴王慕容垂说:“不行,桓温刚撤退时很惶恐,必定严密戒备,挑选精锐作为后卫,攻打他们未必能取胜,不如暂缓追击。他们庆幸我们没到,必定会日夜赶路,等他们士兵疲惫、士气低落,然后攻击他们,没有不能取胜的。”于是率领八千骑兵慢慢跟随在后面。桓温果然日夜兼程前进。几天后,慕容垂告诉将领们说:“可以攻打桓温了。”于是紧急追击,在襄邑(今河南睢县,襄邑县自汉以来属陈留郡)追上桓温。范阳王慕容德先率领四千精锐骑兵埋伏在襄邑东面的山涧中,和慕容垂夹击桓温,大败晋军,斩杀三万人。秦将苟池在谯郡(今安徽亳州)截击桓温,又打败了他,战死的又以万计。孙元于是占据武阳抵抗燕国,燕左卫将军孟高讨伐擒获了他。
冬季,十月,己巳日,大司马桓温收编溃散的士兵,驻扎在山阳(今江苏淮安,刘昫说:山阳是汉射阳县地,晋朝设置山阳郡,改为山阳县,唐为楚州治所)。桓温对惨败深感耻辱,于是把罪责推给袁真,以石门没有打开、粮运中断作为袁真的罪状。上奏罢免袁真为平民;又罢免冠军将军邓遐的官职。袁真认为桓温诬陷自己,不服,上表列举桓温的罪状;朝廷没有回复。袁真于是占据寿春(今安徽寿县)反叛,投降燕国,并且请求救援;也派使者到秦国。桓温任命毛虎生兼任淮南太守,镇守历阳(今安徽和县,胡三省注:淮南太守本治寿春,寿春反叛后,让毛虎生兼任淮南太守而镇守历阳。历阳本是淮南属县,毛虎生镇守这里,对外防备寿春,对内保卫江南)。
燕、秦建立友好关系后,使者多次往来。燕散骑侍郎郝晷、给事黄门侍郎梁琛相继到秦国。郝晷和王猛有旧交情,王猛像平时一样接待他,询问东边燕国的情况。郝晷看到燕国政治混乱而秦国治理得很好(胡三省注:暗中知道燕国将要灭亡),暗中想依附王猛,泄露了很多燕国的实情。
梁琛到达长安,秦王苻坚正在万年(今陕西西安东北,万年,秦的栎阳,汉高帝时改名,属冯翊,晋属京兆)打猎,想召见梁琛,梁琛说:“秦国使者到燕国,燕国的君臣都穿朝服、备礼仪