七月,桓溫首開戰果,攻克湖陸(今山東魚台縣東南),生擒前燕守將,寧東將軍慕容忠。燕主慕容瑋任命下邳王慕容厲為征討大都督,倉促調兩萬兵馬,與桓溫在黃墟(今河南蘭考縣東南)交戰,大敗,全軍覆沒,慕容厲一個人單馬逃回。隨即,前燕高平太守徐翻向晉軍投降。晉軍前鋒鄧遐、朱序又在林渚(今河南新鄭縣東北)打敗燕軍。慕容瑋慌忙任命自己的哥哥樂安王慕容臧接替慕容厲率各路軍馬阻截,但晉軍勢如破竹,慕容臧無法招架,節節敗退。隻好又派散騎從侍李鳳,前往前秦求救。七月,桓溫進駐武陽,前燕故兗州剌史孫元,起兵響應桓溫,桓溫乘勝,進抵枋頭(今河南浚縣東南淇門渡),距離鄴城,已不過百裏。鄴城裏的皇帝慕容瑋和太傅慕容評,聞知大驚失色,已打算逃回故鄉龍城,將中原拱手讓出了。
這時有個人站出來慷慨說道:“大燕帝國畢竟是慕容家數代英傑努力的結晶,怎能忍心看著它滅亡?請讓我來打一仗吧,如果我輸了,你們要逃,也還來得及!”說這句話是的慕容垂,他是前燕文明王慕容皝第五子。他身長七尺七寸,氣宇軒昂,手垂過膝,慕容皝對其甚是寵愛,常對諸弟說:“此兒闊達好奇,終能破人家,或能成人家。”後來想以其為世子,後被群臣進諫而止。
本來,慕容瑋和慕容評都是非常不願意讓慕容垂掌兵的,但畢竟現在火都已經燒到屁股了,萬般無奈,隻好準了,讓慕容垂接替慕容臧任南討大都督,統率各處馬共五萬人抵擋桓溫。然後,慕容垂緊急上書推薦司徒左長史申胤、黃門侍郎封孚、尚書郎悉羅騰參與軍事。因為處在危難當頭,慕容瑋和慕容評也隻好準了,但對慕容垂乘人之危任用私黨,心中感到由衷地憤怒。慕容瑋好象對五叔的信心也不是很足,所以又派出散騎侍郎樂嵩二度到前秦求救,並極為草率地提出,隻要前秦出兵相助,前燕就將包括洛陽在內的虎牢關以西的土地割讓給前秦。既然有這麼大的好處可撈,秦王苻堅遂命大將苟池、鄧羌率兵二萬進至潁川(當時屬前燕,今河南禹縣),以觀成敗。
枋頭是當時黃河上重要的渡口,從這裏往北到鄴城,雖然路程不長,但就再也沒有水道可通了。桓溫到達這裏後,停頓了一下,大概推進太快造成補給有些脫節,也可能希望前燕內部有更多的人響應,象孫元那種情況的。這一停頓之間,慕容垂已進抵枋頭,這兩位用兵大家,沿黃河對峙。兩人的對壘,先進行了一些小規模的前哨戰,給晉軍擔任向導的段思,與剛剛得到慕容垂提拔的燕將悉羅騰交戰,被悉羅騰生擒。桓溫又派原後趙降將李述出擊燕軍側後,但又被悉羅騰擊斬,晉軍的攻勢被阻止。
汶水、清水、黃河這條水運路線,隨著入秋降雨量的減少,果然很快就不出郗超所料的運行不暢了,不過桓溫也是有備用方案的。他早已命令豫州剌史袁真,進攻譙郡(今安徽亳縣)、梁國(今河南商丘),鑿通石門(今河南滎陽縣前),連接睢水與黃河,用以運糧。袁真成功地攻克了譙郡、梁國,但石門一時還未能鑿開。
慕容垂小心翼翼地打了幾場小勝,扭轉屢敗之勢,穩住陣角之後,立即將手下大部份騎兵一萬五千人交給弟弟慕容德,讓他越出桓溫之後,緊逼石門,以阻撓晉軍的開鑿,自己仍然留在枋頭牽製桓溫本部。桓溫可能沒有得到這個情報,或者幾次小敗之後,他感到與慕容垂決戰沒有把握,沒有乘燕軍分兵之機出擊慕容垂本營,還在等待袁真部和補給的到來。九月,石門會戰,慕容德部擊敗袁真部晉軍,桓溫的備份方案完全失敗。這樣,枋頭桓溫大軍的處境就不大好了,拖在這裏,糧食隻會越吃越少;前進,他又沒有打敗慕容垂的把握;剩下的隻能是乘著軍糧還不太緊張的時候全師而退了。九月十九日,桓溫命令焚燒艦船和帶不走的輜重,因為原先過來的河道水位下降,這些船已經開不回去了。全軍由陸路向南撤退。
前燕眾將得到這個消息,都爭著要追擊,但被慕容垂阻止,他對眾將說:“溫初退惶恐,必嚴設警備,簡精銳為後拒,擊之未必得誌,不如緩之。彼幸吾未至,必晝夜疾趨;俟其士眾力盡氣衰,然後擊之,無不克矣。”慕容垂到也沒打算就讓桓溫這麼安安穩穩地回去,但他很清楚,桓溫精通兵法,警惕性很高,一定會以精兵斷後,慢慢撤退,晉軍也沒有打什麼大的敗仗,士卒也不疲憊,糧食也還能支持,就此追擊,勝負難料。總之,桓溫大軍還沒到可以攻擊的時候。等他走出相當路程,特別是眼看就能回到家的時候,防備必然鬆懈下來,快速回奔,所謂歸心似箭,沒有作戰的意誌,隻想回家,又十分疲勞,那時候就好打了。《孫子兵法·始計篇》中說:兵者,詭道也。故能而示之不能,用而示之不用,近而示之遠,遠而示之近。利而誘之,亂而取之,實而備之,強而避之,怒而撓之,卑而驕之,佚而勞之,親而離之,攻其無備,出其不意。此兵家之勝,不可先傳也。簡單地翻譯過來,就是說:有能力要裝作沒能力,要打的要裝作不打,打這裏要裝作打那裏,對方貪心就利誘他,對方強大就防備他,對方易怒就挑撥他,對方謹慎就讓他驕傲,對方體力充沛就讓他勞累,對方內部團結就設法離間,要在對方沒有防備的地方,沒有料到的時機進攻。這些原則,被慕容垂毫不吝嗇地送給了桓溫。