起初,桓温派豫州刺史袁真攻打谯郡、梁国,开辟石门通道以便水路运输,袁真攻克了谯郡、梁国,却没能打开石门,水路运输的道路被堵塞。
九月,前燕范阳王慕容德率领一万骑兵、兰台治书侍御史刘当率领五千骑兵驻扎在石门,豫州刺史李邽率领五千州兵切断桓温的运粮通道。刘当是刘佩的儿子。慕容德派将军慕容宙率领一千骑兵作为前锋,与晋军相遇。慕容宙说:“晋人轻躁强悍,害怕陷入硬仗而善于乘胜追击,应该设置诱饵来钓他们上钩。”于是派二百骑兵挑战,将剩下的骑兵分成三处埋伏。挑战的骑兵还没交锋就逃跑,晋军追击;慕容宙率领伏兵攻击,晋军死伤很多。
桓温屡战不利,粮食储备又耗尽,听说前秦的军队即将到来,丙申日,烧毁船只,丢弃装备物资,从陆路逃跑。任命毛虎生督察东燕等四郡诸军事,兼任东燕太守。
桓温从东燕经仓垣撤退,凿井取水饮用,走了七百多里。燕国的众将都争着想追击,吴王慕容垂说:“不行。桓温刚撤退时必然惊恐,一定会严加戒备,挑选精锐部队断后,此时攻击未必能如愿,不如暂缓。他们庆幸我们没有追,必定昼夜急行;等他们的士兵力气耗尽、士气衰退,然后再攻击,没有不成功的。”于是率领八千骑兵缓慢行进跟在晋军后面。桓温果然兼程赶路。几天后,慕容垂告诉众将:“可以攻击桓温了。”于是急速追击,在襄邑追上了桓温。范阳王慕容德事先率领四千精锐骑兵埋伏在襄邑东面的山洞中,和慕容垂夹击桓温,又大败晋军,死亡人数又以万计。孙元于是占据武阳抵抗燕军,燕国左卫将军孟高讨伐并擒获了他。
冬季十月己巳日,大司马桓温收集溃散的士兵,驻扎在山阳。桓温深以这次惨败为耻辱,于是把罪责归咎于袁真,上奏请求将袁真废为平民;又免去了冠军将军邓遐的官职。袁真认为桓温诬陷自己,不服,上表列举桓温的罪状,朝廷没有回复。袁真于是占据寿春反叛,投降了前燕,并请求救援;也派使者去了前秦。桓温任命毛虎生兼任淮南太守,守卫历阳。
燕国、秦国既然结交友好,使者多次往来。燕国散骑侍郎太原人郝晷、给事黄门侍郎梁琛相继出使秦国。郝晷与王猛有旧交,王猛用平生故交的礼节接待他,向他询问燕国的事情。郝晷看到燕国政治不修明而秦国治理得很好,知道燕国将要灭亡,暗中想投靠王猛,便泄露了不少实情。
梁琛到达长安,秦王苻坚正在万年县打猎,想要在野外接见梁琛,梁琛说:“秦国的使者到燕国,燕国的君臣身穿朝服,礼仪完备,打扫好宫廷,然后才敢接见。现在秦王想在野外接见我,臣不敢从命!”尚书郎辛劲对梁琛说:“宾客入境,只能听从主人的安排,您怎么能专断接见的礼仪呢!况且天子称为乘舆,所到之处称为行在所,哪里一定要在朝堂上!另外,《春秋》中也有不期而遇的礼节,为什么不可以呢!”梁琛说:“晋朝纲纪不振,天命归于有德之人,我们两国承受天命,都接受了上天的明命。而桓温猖狂,窥视我们的疆土,燕国危险,秦国孤立,形势使我们不能独自立国,所以秦国君主共同忧虑当前的祸患,结盟求援。我燕国君臣,伸长脖子向西眺望,惭愧自己不够强大,给邻国带来忧虑,对待西来的使者,尊敬有加。如今强敌已经退却,两国交往刚刚开始,我认为应该崇尚礼仪重视道义来巩固两国的友好;如果轻慢使臣,就是轻视燕国,这难道是修好的道理吗!天子以四海为家,所以出行称为乘舆,停留称为行在。如今天下分裂,日月分照各方,怎么能再用乘舆、行在的说法呢!礼仪上,没有约定而相见称为‘遇’;那是因事权宜而行的,礼节简略,难道是平时从容交往时所该做的吗!使者单独出行,诚然在形势上屈从于主人;但如果不按礼仪行事,也不敢听从。”苻坚于是为梁琛设置了行宫,百官陪列,然后接待客人,如同燕国的朝会仪式。
事后,苻坚设私宴招待梁琛,问他:“你们东朝的名臣是谁?”梁琛说:“太傅上庸王慕容评,德行光明,是王室至亲,辅佐朝廷;车骑大将军吴王慕容垂,雄才大略冠绝当世,御侮克敌;其余有的因文才进用,有的凭武略任职,官员都称职,民间没有遗漏的贤才。”
梁琛的堂兄梁弈是秦国的尚书郎,苻坚让典客安排梁琛住在梁弈的宅邸。梁琛说:“从前诸葛瑾为吴国出使蜀汉,与诸葛亮只在朝堂上相见,退朝后没有私人见面,我私下很仰慕这种做法。现在让我住到私人家里,我不敢接受。”最终没有去住。梁弈多次来到宾馆,与梁琛同住,闲聊中间及燕国的事情。梁琛说:“如今两国各据一方,我们兄弟都蒙受荣耀恩宠,但从本心来说,各有所向。我要是说燕国的好话,恐怕不是秦国愿意听的;要是说它的坏话,又不是使臣所该议论的。兄长何必问呢!”
苻坚让太子召见梁琛。秦国人想让梁琛向太子行拜礼,事先暗示他说:“邻国的君主,就像是自己的君主;邻国的太子,又