苻堅道:&ldo;天下是高祖打下來的,我怎麼能讓高祖斷子絕孫呢?至於苻雙,他既然觸犯國法,當以國法處置,不可因私廢法。&rdo;
秦國處理內亂的時候,東晉則已經派兵北伐攻燕了。桓溫帶八萬大軍一路北進,其先頭部隊建威將軍檀玄在湖陸(今江蘇沛縣北)先和燕寧東將軍慕容忠打了一仗。晉軍大勝,俘虜慕容忠。桓溫再進抵金鄉(今山東省濟寧市金鄉縣)。這時正遇到北方大旱,許多水道乾涸,晉軍習慣水運輜重而不備騾馬,後勤供應不上。桓溫遂暫時停止進軍,開鑿通了三百里水路,連線泗水與清水。但因為是旱年,水並不深,還是不方便漕運,又開鑿水道將汶水引入清水。
水道暢通之後,已經是深秋了,如果不能速戰速決的話,冬季一到,河道結冰,後勤仍然會成為影響桓溫進軍的大問題。而且南方兵將不習慣在寒冷的冬季作戰,很影響戰鬥力。於是郗超建議不要再攻城略地了,率大軍直撲燕國首都鄴城,只要攻破鄴城,燕軍一定大批北撤,黃河以南的大片失地便可很快收復。
桓溫聽了沉思不語。郗超又道:&ldo;如果您認為不顧後方,直逼燕都,有點兒太冒險的話。您可以先停兵不前,儲備物資,等明年夏天再進兵。雖說是遲了一些,畢竟比較穩妥,明年一定能大勝燕國。&rdo;
桓溫進兵鄴城沒有把握,駐軍不進又不甘心,於是道:&ldo;你的前計太急了一些,後策又太緩了一些。&rdo;遂率陸軍繼續進兵,很快與燕國剛剛調集來的主力軍兩萬前鋒騎兵相遇。晉軍再一次擊敗燕軍,下邳王慕容厲逃跑。高平(今山東濟寧微山縣)太守徐翻獻城投降。
慕容的庶兄樂安王慕容臧的八萬軍隊接著南下與晉軍交戰。晉軍前鋒軍朱序的部隊失利退兵。桓溫親自指揮大軍與慕容臧大戰,終於大敗慕容臧。慕容臧領殘兵北逃。
桓溫遂一路進軍到武陽(今山東省聊城市陽穀縣西,陽穀當時屬於兗州),兗州刺史孫元在桓溫還沒有來的時候就掛起了晉國的旗幟起義投誠了。桓溫遂又進兵枋頭。枋頭離鄴城不過二百里地,三天的路程。慕容和太傅慕容評十分恐懼,商議欲逃故都和龍(今遼寧朝陽)。
這時,吳王慕容垂站出來說:&ldo;現在鄴城還有十萬人馬,仍可與晉兵一戰。為什麼要逃呢?難道祖宗打下的江山就被我們這麼輕易地扔掉麼?&rdo;
慕容評堅持要逃,慕容垂堅持要戰。慕容決定不了,在殿上急得直哭。這時皇甫真道:&ldo;大司馬臨終的時候說,如果國事緊急,一定要重用吳王,您忘了麼?&rdo;大司馬就是慕容恪。慕容聽了,這才決定讓慕容垂統兵南拒晉兵。
慕容評擔心慕容垂打不過晉軍,嚮慕容建議用讓出虎牢關以西所有土地的代價去請秦兵來救。慕容遂派散騎常侍李鳳、散騎侍郎樂嵩為使,去長安向秦國求救。
苻堅擔心晉國滅了燕國後實力大增,對秦國不利,再加上燕國願意割地,便派將軍苟池、洛州刺史鄧羌率三萬軍馬去救燕國。
慕容垂進兵到枋頭,並不與晉軍交戰。他先密派慕容德與蘭臺治書侍御史劉當以一萬五千重兵緊守石門,斷去晉軍賴以漕運的水源,又派豫州刺史李邽守皋陵陸道,斷去晉軍從陸路運糧的通道;再派尚書郎悉羅騰與虎賁中郎將染干津率五千精騎兵,去組織各郡縣搶收附近糧食,並阻止晉軍就地收糧。然後緊閉營壘,只守不攻。
桓溫嚮慕容垂的營寨進攻了幾回,慕容垂牢守陣地,一時不能攻克,雙方在枋頭形成了膠著狀態。一直拖延到九月,由於石門斷水,清河的水位降低,不便漕運,桓溫派袁真率一萬兵進攻石門,以放水源。
慕容德派慕容宙和慕容寅設下一支伏兵,襲擊了袁真的前鋒袁瑾,袁真帶兵去救袁瑾,