于是桓温沿水路进至枋头后,虽然距离邺城已经不是很远,却没有水道可以继续利用,而战事还将持续数月,进入秋冬来时的水路便没法再走,出于稳妥他命令走谯郡、梁国一线的豫州刺史袁真攻打石门,凿通睢水与黄河作为另一条后路。
之前桓温进驻武阳时,阳平人前燕兖州刺史孙元起兵响应,到达枋头后为了制造声势吸引更多追随者,他派出了熟知北方人物、地理的将领进行迂回。担任晋军向导的段思受命率部哨探,却被慕容垂掌兵后提拔的悉罗腾生擒,后赵降将李述随后接手了段思的工作,领兵绕路袭击燕军侧后,又遭遇悉罗腾和染干津拦截被当场斩杀,晋军在前哨交锋中接连遇挫,燕军则利用这期间对战场的短暂遮断进行了分兵。
桓温此时仍未察觉到不对劲,而从段思那里得到晋军偏师情报后,慕容垂集中所率的大部分骑兵约一万五千,交由弟弟慕容德率领前往石门阻击袁真,他本人则留在枋头待分兵之举被桓温发觉后牵制其主力。
慕容德额头饱满有日角隆准之相,个子比慕容垂还要高半头,前秦五公之乱时他曾上疏提议出兵,是个有远见卓识的人。袁真早年曾随庾翼北伐,在汝南、寿阳一线镇守多年,也是屡历战阵的宿将。慕容德与刘当率一万兵驻扎在石门,利用骑兵机动优势对袁真施压,迫其分出大量兵力戒备无法全力通运,又遣李邽领五千兵去袭扰晋军粮道。八月苟池、邓羌率前秦援军二万抵达颍川,袁真彻底陷入困境,而桓温受慕容垂牵制也无法支援。
袁真顶着压力硬撑到九月,士卒疲惫不堪,军粮耗尽却仍未能开通漕运。慕容德派慕容宙率一千骑为前锋发起反击,慕容宙以二百骑引诱晋军追击,自率剩余骑兵分三处埋伏,杀伤大量晋军。
而在枋头,随着入秋降雨减少,水位下降,桓温已无法原路返回。石门无法开通,军粮将尽,发现前秦援军,种种不利之下桓温只得焚烧船只,从陆路退兵。桓温以毛穆之留守东燕,经仓垣撤退,因慕容德用人畜尸体污染水源,晋军沿途只能掘井获取饮水,可以说是疲于奔命、人心惶惶。
前燕诸军发起追击,慕容垂认为晋军虽败,但主动撤退仍保持秩序,又有猛将邓遐率精锐断后,不如放缓速度,让晋军误以为燕军主力未到,加快撤退速度组织散乱后再大举追击。
慕容垂领八千骑兵缓缓跟随,慕容德率四千骑兵提前赶至襄邑阻截,晋军加快行军速度后,慕容垂也提速追赶,桓温在襄邑被追上遭夹击后大败,损失近三万。退至谯郡,桓温又遭遇苟池所率的前秦援军伏击,被杀伤近万人。
十月,桓温撤退到山阳收拢溃兵,耻于大败的他将责任推诿给了未能开通石门的袁真。袁真当然不愿意背这黑锅,慕容德那一万五千骑兵可是桓温漏过来的,于是向朝廷上表申诉。可朝廷畏于胁迫,不但不敢追究桓温,还命侍中罗含带着牛酒前往山阳犒赏,又任命其子桓熙为豫州刺史。心有不甘的袁真据寿春降燕,直到太和六年(371年)才被平定,而为桓温殿后的邓遐与袁真是同乡加表亲,也受到桓温猜忌被寻了个理由免职,没几年就郁郁而终。
同时,燕国以燕、秦缔结友好为名,相继派散骑侍郎郝晷、大鸿胪梁琛出使,探听秦国是否有对燕动兵意向。郝晷曾为徐统故吏,几次奉命登门辟请王猛,因此算是旧识,出使途中看到秦国大治,而燕国却内政混乱,因此暗中表露了依附王猛的心思,并泄露了很多燕国内情。梁琛的从兄梁奕则是在秦国任尚书郎,于是苻坚派梁奕在家中接待梁琛,梁琛以诸葛瑾出使蜀汉不与诸葛亮私下会面一事为由,拒绝前往梁奕家中相见,但在公馆之中却通过刻意对燕国的美化,隐隐暗示了大量情报。
十一月,晋军刚一退兵,慕容暐就反悔了,拒绝割让之前向秦国求援时许诺的虎牢关以西之地,前秦以此作为出兵名义,开启了攻灭前燕的序幕。