公元365年,前燕再次攻打洛阳,陈祐出逃。司马昱得知,与桓温在洌洲会面,命他移镇姑孰,准备征讨之事,但最终因晋哀帝驾崩而作罢。
公元368年,桓温获加殊礼,位在诸侯王之上。
公元369年三月,徐兖二州刺史郗愔致信桓温,表示愿意与他共同辅佐王室,请求率部出河上。当时,北府兵卒悍勇,桓温不愿让郗愔掌握京口重镇。郗愔之子郗超为桓温参军,暗中将原信毁掉,并以父亲的名义伪造信件,自称老病,请以闲职休养。桓温便顺势改任郗愔为会稽内史,自领徐兖二州刺史,兼并了郗愔的军队。
同年四月,桓温亲率步骑五万,与江州刺史桓冲、豫州刺史袁真一同北伐前燕。他率军攻湖陆,擒获燕将慕容忠,进逼金乡。当时正逢大旱,水道不通,桓温便让人在钜野开凿水路三百里,使船只由清水进入黄河。
郗超建议桓温尽率全军直击前燕国都邺城,或者坚守河道,控制漕运,储蓄粮食,直至明年夏天再继续进攻。他认为如不速战速决,当战事拖延至秋冬后,在水量减少而北方早降温的客观条件之下,会令晋军更难维持。但桓温全都不听。
七月,燕国大将慕容垂、傅末波等人率八万大军前来抵抗晋军,两军对峙于枋头。桓温命袁真进攻谯、梁,并打开石门水道。但袁真始终无法开通石门,最终晋军军粮耗尽。九月,桓温焚毁战船,退军而去。慕容垂率八千骑军追赶,与晋军战于襄邑。桓温大败,死伤三万人。
桓温兵败后,退至山阳,收集散卒,并将战败之罪委于袁真。他上疏朝廷,请废袁真为庶人。袁真不服,据寿春叛变,并暗中勾结前秦、前燕。朝廷不但不敢追究桓温的兵败之责,还命侍中罗含带着牛酒到山阳犒劳桓温,并任命其子桓熙为豫州刺史。后来,桓温又移镇广陵。
公元370年二月,袁真病死,部将朱辅拥立其子袁瑾为豫州刺史。前燕、前秦都遣军援助袁瑾,桓温命部将竺瑶、矫阳之率军迎战。燕军先至,在武丘与竺瑶交战,结果大败而回。同年八月,桓温率二万军队攻打寿春,并筑起长围,将城池团团围困。袁瑾只得婴城固守。
公元371年,前秦将领王鉴、张蚝率军援救袁瑾,结果被桓温部将桓伊、桓石虔击败。不久,桓温攻破寿春,俘获袁瑾,将袁瑾、朱辅及其宗族数十人全部送往建康斩首。袁瑾妻女被赏赐将士,所侍养的数百乞活军则被活埋。从此,豫州彻底落入桓温之手。桓温掌握了进入建康的锁钥。
桓温自负才能过人,久怀异志,因此发动北伐希望先建立功勋,然后回朝接受九锡,从而夺取政权。但因第三次北伐失败,声望大减,图谋不成。
寿春之战后,桓温曾问郗超道:“某这次胜利能雪枋头兵败之耻吗?”郗超则表示不能,并建议桓温效仿伊尹、霍光,废立皇帝,以重立威权。桓温遂决定废黜皇帝司马奕。