无奈派桓温掌握北伐大权。桓温先后发动三次北伐，同年2月伐前秦，苻健採用坚壁清野战术，打败晋军，桓温缺粮撤退。356年，桓温击溃河南姚襄，收复洛阳，修谒皇陵。358年他建议迁都洛阳，遭到世族反对作罢。晋哀帝及晋废帝时期，朝廷已经被桓温控制。当时北方呈现前秦前燕两强局势，洛阳为前燕佔领。桓温为了准备篡位，于369年讨伐前燕。燕军大败，晋军进驻枋头（今河南浚县附近），与燕将慕容垂对峙。最后晋军缺粮而退，慕容垂率军追杀，晋军大败。371年桓温废晋帝司马奕为东海王，改立司马昱，即简文帝。隔年简文帝去世，晋孝武帝继位，