興甯二年三月,前燕将李洪攻打許昌,大敗晉軍。桓溫派将領疏通水路,親自率舟師進兵合肥,準備北伐。這次已是桓溫第三次北伐。
然而東晉朝廷不想讓桓溫北伐。五月,晉廷又以桓溫為揚州牧、錄尚書事,遣侍中顔旄宣旨,召桓溫入朝參政。桓溫以中原尚未恢複為由推托。朝廷不許,再次征桓溫入朝。桓溫軍至赭圻(時屬宣城郡,今安徽宣城附近),晉廷又诏尚書車灌止之,桓溫遂城赭圻而居之,遙領揚州牧。當年,桓溫移鎮姑孰,以其弟桓豁監荊、揚、雍州軍事,鎮守荊州。其時桓溫權傾天下,遙控朝政。不久,哀帝死,桓溫北伐之舉暫時擱置。

太和四年,也就是公元369年,桓溫正式出兵攻打前燕,進行第三次北伐。這次距離上次北伐已時隔13年,桓溫此時年已57歲。這次北伐,桓溫軍從各方面看都沒有短闆。東晉在桓溫實行“土斷”之後,财阜國豐,軍糧軍資充足,時郗愔所領徐州,其民多勁悍,為精兵所聚之地。就是曆史上赫赫有名的“北府兵”兵源地。桓溫常說:“京口(徐州治所,今江蘇鎮江市)酒可飲、兵可用。”後來郗愔聽從郗超建議,将軍權讓給桓溫,桓溫軍力大增。
正因為桓溫兵鋒強勁,導緻他過度自信,在後來的行軍作戰中他剛愎自用、思維僵化,使晉軍一步步落入了深淵。桓溫四月發兵後,先命冠軍将軍毛虎生鑿巨野(在今山東巨野北)三百裡,引汶水(大汶水)會于清水(古濟水自巨野澤以下又稱清水)。這條航道後稱“桓公渎”。當年天下大旱,運河水太淺。謀士郗超敏銳意識到後勤運糧船可能會擱淺,因而勸阻桓溫孤軍深入,建議先攻打邺城,或者屯兵河、濟,等第二年進兵。
郗超提出的兩個理性建議都不被桓溫采納。桓溫派建威将軍檀玄攻湖陸(山東西南部)。檀玄很快攻下湖陸,擒獲燕之甯東将軍慕容忠。前燕主派慕容厲率步騎二萬在黃墟(河南民權北)迎戰晉軍,結果大敗,慕容厲單騎逃回。桓溫前鋒鄧遐、朱序又大破燕将傅顔于林渚(河南鄭州市東北)。
七月,桓溫大軍進至枋頭(今河南浚縣)。燕君臣惶恐不安,準備逃往和龍(今遼甯朝陽市)。這時,前燕名臣慕容垂勸阻說:“不然,臣請擊之,若戰不捷,走未晚也。”意思是:“我出馬反抗一下試試,不行再逃也來得及。”燕主命慕容垂為使持節、南讨大都督,率衆五萬抵禦晉軍,又使其散騎侍郎樂嵩去向前秦求救。
桓溫進軍之初,曾派袁真進攻谯、梁之地,并開石門(河南荥陽境)引黃河水入汴渠(河南荥陽西南之索河),溝通淮、泗水以通水運。袁真雖然平定谯、梁之地,但石門卻沒能打開。這時,桓公渎果然如郗超所料,因為幹旱水位下降,不能通運。慕容垂又派燕範陽王慕容德,蘭台侍禦史劉當率騎兵一萬五千駐屯石門,桓溫水軍的退路及糧食供應都成了問題。
桓溫進至枋頭,離燕都邺城隻有二百裡路,但他頓兵枋頭,不敢直趨邺城。這時,晉軍的形勢已很不妙,水運不通,糧草不繼,退軍已經是必然的了。此後,桓溫幾次與燕軍交戰都未取勝,又聽說前秦軍将至,乃指令燒掉船隻,棄掉辎重從陸路退軍。晉軍為怕燕軍在上流放毒,一路上鑿井而飲。
晉軍退兵,前燕将領都要追擊,慕容垂說:“不可,溫初退惶恐,必嚴設警備,簡精銳為後拒,擊之未必得志,不如緩之。彼幸吾未至,必晝夜疾趨,俟其士衆力盡氣衰,然後擊之,無不克矣。”慕容垂親率騎兵八千跟蹤桓溫軍隊,又派慕容德率精騎四千埋伏于襄邑(河南睢縣西)東澗中。
桓溫見燕軍未來追趕,果然放下戒心,指令晉軍兼程而進。慕容垂指令部下急速追趕,在襄邑追上晉軍。慕容垂與慕容德前後夾擊,大敗桓溫,晉軍被殺者達三萬人之多。此後,前秦救兵苟池又于路邀擊桓溫,晉軍又死傷萬餘人。十月,桓溫收拾散卒,駐軍于山陽(山東金鄉縣西北)。桓溫的第三次北伐遂以慘敗告終。
客觀講,桓溫熟悉兵法,也善于用兵,比如他伐蜀途中,曾于魚腹(四川奉節東)平沙上見諸葛亮用石壘就的八陣圖,其“壘石為八行,行相去二丈”,其軍中文武皆不識此陣,但桓溫一見就說:“此常山蛇勢也。”可見他對兵法陣勢是很精通的。但桓溫還不是一個出類撥萃的軍事家,用兵貴在多謀善斷,相機而動。桓溫于此卻略遜一籌,他多次在大好形勢下觀望不進,雖與他志在立威,無意真正北伐有關,但也反映出他用兵不善于捕捉戰機,缺乏靈活性。是以前燕申胤說他:“驕而恃衆,怯于應變”。再加上桓溫在朝廷逞威多年,過于順遂,思維僵化,少有機會糾正自身弱點,以至于北伐以慘敗收場。