锐意北伐永和五年(349),后赵主石虎病死。桓温自江陵出屯安陆(今湖北安陆),遣诸将经营北方,并上疏请求北伐。朝廷不加理睬。反而在这年七月,以征北大将军褚裒为征讨大都督、督徐、兖、青、扬、豫五州诸军事,命其北伐后赵。桓温北伐之举遂搁置。此后,桓温又屡次上表要求北伐,但朝廷对其既有戒心,均未获准。永和七年十二月,桓温再次拜表辄行,率大军四、五万自江陵顺流而下,至武昌(今湖北鄂城)而止。朝廷上下惊恐不安。褚裒既败,晋廷又欲以殷浩北伐,故殷浩时为中军将军、假节、都督扬、豫、徐、兖、青五州诸军事,闻桓温陈兵而下,惊慌失措,欲去位以避之,经吏部尚书王彪之力劝乃止。这时,会稽王司马昱写信给桓温,极力劝阻,说北伐尚非其时,应先“思宁国而后图外”,所以以前未准桓温北伐。又说桓温行此“异常之举”①,容易引起非议,希望桓温深思熟虑之。桓温还不敢公开对抗朝廷,见信后即刻率军还镇,并上疏解释说,此次率军东来,是要北伐扫灭赵、魏(冉魏),历年多次上疏要求北伐都是想为国家“静乱”,恢复中原,自己并无私心。朝廷以桓温为太尉,桓温固让不拜。
永和八年,殷浩自寿春率晋军北伐。但不久其督统、安西将军谢尚等在许昌(今河南许昌)大败于前秦将张遇,晋军死伤一万五千人,谢尚逃回,殷浩又退回寿春。第二年,殷浩率军七万再次北进,准备进据洛阳,修复晋廷园陵。但前锋羌人将领姚襄于中途倒戈,进击殷浩。殷浩军大败,将士损失万余人,殷浩尽弃辎重狼狈逃回,其北代又告失败。
桓温见殷浩兵败,立刻上疏弹劾,请朝廷废掉殷浩。于是殷浩被免为庶人,徙居信安。自此,朝廷内外大权渐归于桓温,朝中已没有人再能阻止桓温北伐。从永和十年至海西公太和四年(369),桓温连续进行了三次北伐。北伐前秦永和十年二月,桓温率步骑四万从江陵出发,使步军自淅川(今河南淅川均水)趋武关(今陕西丹凤东南);水军从襄阳(今湖北襄樊市)入均口(今湖北均县西,古均水入汉水的水口);又命梁州刺史司马勋出子午道(关中到汉中的通道),诸道并趋关中,进攻前秦。
桓温大军进展顺利,淅川一路步军攻上洛(今陕西商县),擒获前秦荆州刺史郭敬,接着攻克青泥城(今陕西蓝田)。前秦主苻健派太子苻苌、子苻生等率兵五万屯于峣柳(今陕西商县西北),阻挡桓温亲率的主力军西进①《世说新语·政事篇》注引《温别传》。
②见《资治通鉴》卷九十九晋穆帝永和七年胡三省注。
①以上引文见《资治通鉴》卷九十九晋穆帝永和七年。
长安(今陕西西安市西北)。四月,二军相遇,展开激战,前秦苻生骁勇异常,杀桓温将应诞、刘弘等多人,晋军死伤千余人。桓温督军力战,终于大破秦军。与此同时,桓温弟桓冲又大败前秦丞相苻雄于白鹿原(今陕西蓝田西灞、浐二水之间)。随后,桓温军转战而前,进军灞上(今陕西西安市东),长安指日可下。苻苌等秦军退守长安城南,苻健自领羸兵六千固守长安小城(内城),倾全部精兵三万,由大司马雷弱儿等率领,与苻苌合力抵抗桓温。晋军顺利入关,长安附近郡县纷纷来降。桓温抚喻百姓,使其安居复业。关中百姓牵牛担酒沿路迎接桓温,耆老见到晋军,惊喜万状,流着眼泪感叹:“不图今日复见官军。”北伐形势非常之好,但桓温却顿军灞上,观望不进。隐居关中的王猛闻桓温入关,前来相见,与桓温谈当世之务,旁若无人。桓温见民间有此人才,大为惊异,问王猛说:“吾奉天子之命,率锐师十万,杖义讨逆,为百姓除残贼,而三秦豪杰未有至者何也?”王猛说:“公不远千里,深入寇境,长安咫尺而不渡灞水,百姓未见公心故也,所以不至①”。桓然默然无以应。王猛意思是说桓温志在立威,以功名镇服江东,并非真心伐罪吊民,恢复晋土。这正说中桓温心事,故其无所答对。