公元354年,桓温率领4万大军从江陵出发,经襄阳,出武关,越秦岭,大军直指关中,讨伐由氐族人苻氏建立的前秦政权。这是桓温第一次北伐。
前秦王苻坚派太子率5万大军与晋军对抗。这年四月,晋秦两军大战于蓝田,秦军大败。桓温率军占领灞上,抵达前秦都城长安的郊外。当地老百姓纷纷牵牛担酒前来犒劳晋军,有个老人流泪道:“没想到我还能再见到晋军!”
后来因军中缺粮,桓温被迫从潼关退兵。秦军跟踪追击,晋军损失一万多人。
公元356年,桓温第二次北伐,从江陵发兵,向北挺进。桓温前进到伊水,羌人的将领姚襄将精兵埋伏在水北的树林中,派使者对桓温说:“您亲自率领大军前来,我应该立刻归降,希望您让军队稍微后退一点,我就会出来迎接。”桓温回答:“我这次是来收复中原,修复先帝的陵墓,和阁下没有关系。如果阁下想来拜见,现在就近在眼前,何必烦劳使者呢?”姚襄麻痹桓温的企图没有成功,于是就在水边列阵想要顽抗。桓温披甲上阵,亲自督战,指挥晋军向前猛攻,姚襄大败,损失了数千人。姚襄率领几千骑兵逃到了洛阳北山,最后死于与前秦的交战之中。桓温率领部队前进到洛阳,拜祭了先帝,设置了护陵官员,修复了被毁坏的陵墓。桓温向晋穆帝建议还都洛阳,又建议自西晋末年南迁的士庶人等一律返回故乡。但东晋上自皇帝下至达官贵人,都安于江南一隅,不愿北还,桓温的建议未被采纳。桓温只得退兵南归。公元359年,中原地区又被慕容氏的前燕政权所占领。
过了几年,桓温被任命为大司马,尽揽东晋朝政大权。公元369年,桓温发动了第三次北伐,讨伐前燕。桓温率水军进入黄河,一直进军至黄河的枯头渡口。前燕王任命慕容垂为大都督,率5万军队将晋军粮道截断。桓温被迫从陆路撤退,结果被追兵打得溃不成军,折损了三万余人。桓温战败而归后,之前所收复的淮北土地重又丧失。