永和五年(349),后赵皇帝石虎病死,北方形势大乱。桓温立刻上疏朝廷,请求北伐,但却始终未得回复。永和七年(351年)十二月,桓温再次“拜表辄行”,率五万大军顺流而下,至武昌(今湖北鄂城)而止。朝廷为此惊恐不安,殷浩也打算辞官避让。司马昱亲自写信给桓温,极力劝阻,终使桓温率军还镇,返回荆州。后来,朝廷又拜桓温为太尉,被桓温拒绝。
此后两年间,殷浩数次北伐,欲进据洛阳,修复园陵,但却屡次战败。军需物资更被掠夺殆尽,朝野怨恨不已。永和十年(354年)正月,桓温上奏朝廷,列举殷浩罪状,迫使朝廷将殷浩废为庶人。从此,朝廷内外大权尽归桓温,朝中已无人再能阻止桓温北伐。
三次北伐
一伐前秦
永和十年(354年)二月,桓温率军北伐前秦。他亲率步骑四万自江陵出发,由水路自襄阳入均口(今湖北均县西),然后自淅川(今河南淅川东)直趋武关(今陕西丹凤东南),同时命梁州刺史司马勋兵出子午道,合击秦军。晋军历经数次血战,生擒前秦将领郭敬,击退淮南王苻生,顺利进入关中。前秦皇帝苻健命苻苌、苻雄、苻菁等将领率五万军队屯兵峣柳(今陕西商县西北),以阻挡晋军。同年四月,桓温转战至灞上(今陕西西安东)。苻苌等部秦军退守长安城南,苻健自领羸兵六千固守内城,附近郡县更是纷纷来降。桓温抚喻百姓,使其安居复业。关中百姓牵牛担酒沿路迎接,许多老人更是疼哭失声:“没想过今天还能再次见到官军!”
桓温进入关中时,正值麦收时节,他就打算就地收麦,以解决军粮问题,于是屯兵不前。苻健闻听晋军收粮,猜到恒温军中粮草不足,遂采取坚壁清野的方式,使得晋军粮秣不继。六月,桓温被迫撤返江陵,并将关中三千多户百姓一同迁走。秦军随后趁势追击,晋军大败,伤亡甚众。
桓温北伐期间,隐居关中的王猛曾前来拜见,并大谈当世之事,旁若无人,深得桓温的赏识。桓温撤退时邀请王猛一同南下,并任命他为高官督护。但王猛却不肯跟随,留在了北方。
二伐姚襄
永和十二年(356年)二月,桓温数次上表,请求朝廷移都洛阳,修复园陵,但都没有得到朝廷同意。不久,朝廷拜桓温为征讨大都督,都督司、冀二州诸军事,负责征讨事宜。七月,桓温自江陵出兵再次北伐,并命督护高武据守鲁阳(今河南鲁山),辅国将军戴施屯驻河上,进逼许昌、洛阳。同时,他上疏朝廷,请求徐、豫二州出兵淮、泗,进入黄河,以配合作战。