公元363年,桓温被任命为大司马、都督中外诸军事,次年又加扬州牧,到公元369年,兼徐、兖二州刺史,荆、扬两镇,由温一身兼任。温企图利用北伐获得胜利,建立更高的威望,以便代晋称帝,因此决定北伐前燕。这年四月,桓温统率步骑五万,从姑孰(今安徽当涂)出发。六月,到达金乡(今山东金乡)。由于这年夏季气候亢旱,水位低落,如果运输粮食给养的航道不能畅通,五万人的大军是无法北进的。因此桓温驻兵金乡,遣冠军将军毛宝生“凿巨野(即大野泽,在今山东巨野北)三百里,引汶水会于清水(古济水自巨野泽以下别名清水)"(《资治通鉴》晋海西公太和四年)。因为我国的河流大都由西向东,而当时行军需要,必须开凿一条由南向北的航道出来。《水经·济水注》里称这条桓温所开的航道为“桓公渎”。本来这里有一条久已淤塞的河道叫“洪水”,桓公渎就是利用洪水旧道重新加工浚凿,把泗水和巨野泽接通,再通过巨野泽的东北角和清水相连接。桓温还嫌清水的水源不旺,因此他进一步把汶水引人清水1,然后使军用舰只可以由清水驶人黄河。这条桓公渎虽然开凿成了,可是在北方,秋冬之际雨水稀少,水位骤落,航道涩滞,这一条新凿的运河以后能否畅通无阻,仍存在着严重问题。桓温的谋士郗超曾为此事向桓温慎重提出:“清水人河,难以通运,若寇(指前燕)不战,运道又绝,因敌为资,复无所得,此危道也。不若尽举见众直趋邺城,彼畏公威名,必望风逃溃,北归辽、碣。若能出战,则事可立决;若欲城邺而守之,则当此盛夏,难为功力。百姓布野,尽为官有,易水以南,必交臂请命矣。但恐明公以此计轻锐,胜负难必,欲务持重,则莫若顿兵河、济,控引漕运,俟资储充备,至来夏乃进兵;虽如赊迟,然期于成功而已。舍此二策而连军北上,进不速决,退必愆乏。贼(指前燕)因此势以日月相引,渐及秋冬,水更涩滞。且北土早寒,三军裘褐者少,恐于时所忧,非独无食而已。”(《资治通鉴》晋海西公太和四年)郗超指出秋冬之际,水更涩滞,粮运困难,因此提出两个方案:一个是今年顿兵河、济,积蓄粮食,到明年再进兵;一个是直趋邺城,决胜负于一战。而桓温认为第一个方案太迟缓,使前燕有了准备时间;第二个方案,直扑邺城,一决胜负,又太冒险。所以都没有采纳。
桓温亲率水军自清水经四渎口(今山东长清西南、东阿东北)入黄,舳舻数百里,进至枋头(今河南浚县西南)。另外派遣建威将军檀玄自陆路进军,在黄墟(今河南杞县东南)击溃了前燕征讨大都督下邳王慕容厉的二万军队。前锋邓遐、朱序又在林渚(今河南郑州市东北)击败了燕将傅颜的军队,军事形势的发展对东晋非常有利。枋头离前燕国都邺城只有二百里地,前燕君臣恐慌异常,一面向苻秦王朝求救,希望苻秦从洛阳出兵侧击,牵制晋军北进;一面作好出奔龙城(今辽宁朝阳)的准备。同时改派慕容垂为南讨大都督,率兵五万抵御晋军。
恒温七月间到达枋头,果然不出郗超所料,“欲务持重”,不敢直趋邺城。到了这年九月,北方继续缺水,桓公渎水位低落,接近干涸,不能利用了。桓温在进兵之初,曾命豫州刺史袁真进兵谯(郡治谯,今安徽亳州)、梁(治睢阳,今河南商丘南),直趋荥阳(今河南荥阳),想叫他打开荥阳的石门(即汴口)1,把黄河水引进蒗荡渠下注汴渠,以沟通准、泗水运,使水军能由这一条水道,退回淮上。袁真虽然攻克了谯、梁,却不敢进兵荥阳,打不开石门。慕容垂又命其弟范阳王慕容德率领精骑一万五千,加强了石门的防御力量,袁真更难完成夺取荥阳、打开石门这个战略任务了。桓温悬军深人,粮储已竭,只得退兵。退兵时因无法走水道由河人蒗荡渠,由渠人汴,只好焚毁船舰,丢弃辎重兵器,自陆路由东燕县(今河南延津东北三十五里,当时在黄河南岸)经仓垣(今河南开封市东北),步行七百余里,退到襄邑(今河南睢县西)。慕容垂率骑兵八千跟踪追击,慕容德先伏劲骑四千于襄邑东润中,与垂夹击晋军,晋军大败,损失了三万多人。东晋收复的淮水以北的失地,重又丧失。
恒温北伐的失败,正如前燕谋臣申胤所预料的:“以温今日声势,似能有为,然在吾观之,必无成功。何则?晋室衰弱,温专制其国,晋之朝臣,未必皆与之同心,故温之得志,众所不愿也。必将乖阻,以败其事。”(《资治通鉴》晋海西公太和四年)可见东晋统治阶级内部矛盾--荆、扬之争的持续和扩大,牵制着桓温,甚至破坏桓温的北伐,成为他北伐不能获得胜利的主要原因;当然,桓温本身的弱点---企图在胜利以后做皇帝,也使他的北伐事业受到不利的影响。不过桓温的三次北伐,给予氏族、羌族、鲜卑族的统治者一定的打击,在客观上并支持了北方各族人民的反压迫斗争,多少符合了当时中原人民的愿望。
枋头败后,桓温为了挽救自身威望的低落,于公元371年废皇帝司马奕,拥立司马昱为帝,是为简文帝。这时桓温已经六十岁了。翌年,司马昱病死,昱子司马曜(孝武帝)继位,温业已有病,要求加九锡,这是禅位之前的一种荣典,宰相谢安、王坦之、王彪之等故意拖延,拖上九个月,桓温等不到荣典颁发,就病死,东晋王朝又拖长了四十多年。