永和十年(公元354年)初,就在桓温伐秦的同时,屯聚在淮南盱眙的姚襄却向前燕送上了降表。
同年五月,在姚襄的蛊惑之下,江西(今安徽省全椒县以西淮河南岸地区)的乞活郭敞等人,在堂邑(今江苏省南京市六合区北)聚合了一千多人,绑架了东晋陈留内史【此时陈留郡郡治暂设在谯县(今安徽省毫州市)】刘什,投降了姚襄。堂邑距离建康近在咫尺,因此,建康城内一片惊恐,朝廷命令吏部尚书周闵为中军将军,驻屯中堂(今江苏省南京市江宁区);又命令豫州刺史谢尚从江北的历阳(今安徽省和县)渡江南下,保卫京师。周闵是周颤的长子,为人方正,有父亲之风。
对于已经投降了前燕的姚襄来说,淮南绝非久留之地。因为,目前以自己的实力根本难以渡过长江,推翻东晋政府,从而占据江南;而淮南地区紧邻东晋腹地,卧榻之侧岂容他人鼾睡,东晋政府对此绝不会坐视不管。桓温也已从伐秦前线南返,姚襄部众多数是关中之人,他们纷纷向姚襄建议,离开淮南这一是非之地。于是,在永和十一年(公元355年)春,姚襄开始率领部众北还。开始的时候,这支部队似乎是要北上投奔前燕,四月,姚襄所部抵达外黄(今河南省杞县东),驻守在那里的东晋冠军将军高季率部大破姚襄军,姚襄收集散卒,军势复振;高季去世,姚襄则率所部在豫北一带游食,到永和十二年(公元356年)三月,他率军南下占领了许昌。
此时,在黄河以南,东晋并没有太多的主力部队,但是,豫州地区、兖州南部地区,甚至包括青州的段龛都对东晋称臣。因此,从理论上说,洛阳以东、黄河以南大部分地区已经收归东晋政府。早在永和七年张遇投降东晋之后,桓温就曾有迁都洛阳的提议,等他伐秦归来,更是接连向朝廷上了十余道奏章。
如果真的能够迁都洛阳,对于周边地区民心士气将是一个巨大的鼓舞,但是、在当时的条件下,迁都洛阳,不是一蹴而就的事情,尚不具备可行性。这是因为∶其一,洛阳地处四战之地,周围无险可守,西面的前秦势力已经延伸至洛阳近郊的宜阳,函谷关、潼关均在前秦控制之下;北面黄河北岸的河内、上党、河东、太原均为大大小小的军阀占领;东北前秦控制的邺城距离洛阳也并不遥远。迁都洛阳,无疑是将皇帝置于最前线。其二,中原地区饱经战乱,农业生产停顿,如果迁都洛阳,就必须从江东地区漕运粮草,或者就地屯田。其三虽然东晋军队将士不少是南渡流民子弟,但经过数十年的时间,流民渐渐适应了南方的生活,北归的愿望不再像以前那样强烈,尤其是上层士族已经习惯了安逸的生活,更是不愿北还。
因此,桓温的迁都建议并没有得到朝廷的同意。
朝廷方面不敢与桓温正面较量,而是提出了中原地区尚不稳定的问题—也就是尚盘踞许昌的姚襄问题。
朝廷把皮球又踢给了桓温。永和十二年(公元356年)三月,东晋朝廷任命桓温为征讨大都督,加督司州、冀州诸军事,委托以征讨之事,时年桓温已经四十五岁,此时,距离他灭蜀整整过去了十年。
这就促使了桓温的第二次北伐,桓温这次北伐的目的是,消灭盘踞在许昌的姚襄,进而收复洛阳。
四月,桓温率军从江陵出发,开始北上讨伐姚襄,他派遣都督高武进抵鲁阳(今河南省鲁阳县),命令河南太守戴施屯兵黄河岸上,自率大军随后进发。得知桓温即将讨伐自己的消息之后,姚襄即于同月率军西逃,打算占领洛阳。于是,姚襄就开始进攻盘踞在洛阳两年之久的前赵将领周成,姚襄所部围困洛阳一个多月,仍然没有攻下。
八月六日,桓温的大军抵达洛阳近郊的伊水。姚襄解除了对洛阳的包围,前来阻击桓温军队。他将精锐部队藏匿在伊水北岸的密林之中,然后派出使者到桓温的军中说∶"您竟然亲自率领王师前来,姚襄我愿意投降,请命令你的军队稍稍退却,我将拜伏在路边。"
姚襄的诡计是想趁着桓温军队后撤之际,发起突然袭击,可是,桓温并没有上当,他回答∶"我自去恢复中原,拜谒皇陵,与你无干。你想投降就上前,马上就能见面,不用再派使者啰唆!"
见桓温没有中计,姚襄只好率军从树林中出来,依托伊水阻击桓温大军。桓温整顿军队,亲自披上铠甲督弟弟桓冲及诸将死战,渡河对姚襄的部队发起了攻击。在桓温军队的猛烈打击下,姚襄所部大败,被斩杀了数千人,姚襄本人则率领麾下数千骑兵往北逃往洛阳北面的北邙山上。
姚襄素有"勇略赛孙策,仁义如刘备"之称,过去,姚襄败多胜少,屡次战败之后,百姓知道他下落,总是扶老携幼奔赴而来。当夜,百姓知道姚襄所在,抛弃妻子前去投奔姚襄的就有五千余人,随后,姚襄渡过黄河,往东而去,屯驻在阳乡(今山西省沁县西南),百姓知道以后,又有四千户追随而去。《十六国春秋别传》也称∶"百姓随襄者四千余户。"当时,有传言说姚襄已因伤重而死,被拘押在桓温军中的姚襄部民,无不北望落泪。
桓温乘胜追击,没追上姚襄而返。周成率众出降,桓温领军进入了洛阳城。桓温屯兵于过去的太极殿之前,不久又迁往西北的金墉城。数日之后,桓温率众拜谒西晋诸皇陵,命令军士将毁损的皇陵进行修复,并任命官员护陵。
在洛阳,桓温再次上书,要求迁都,并请镇西将军谢尚为都督司州诸军事。镇守洛阳。
姚襄北上之后,谢尚又从尚书仆射任上进号为镇西将军,镇守寿阳。桓温打下了洛阳,而让谢尚镇守,用意当然还是进一步削弱徐豫实力,而碰巧,此时的谢尚身患重病,未能成行,朝廷只得任命王廪的二儿子王胡之为西中郎将、司州刺史、假节,作为镇守洛阳的最高指挥官。
当朝廷任命王胡之为司州刺史之后,因参与王敦之乱而被杀的沈充之子沈劲,此时,已经年过三十,因为是犯罪家属,一直屏居乡下,由于沈家与王氏家族特殊的关系,而且,王胡之所领之兵多为吴兴人,而沈家在吴兴有巨大的影响力,因此,王胡之请求朝廷允许沈劲作为自己的参军。但是,等沈劲上任之后,王胡之却得了重病,很快就去世了。
由于一直没有镇守洛阳的合适人选,此事也就不了了之。
面对桓温的再次敦逼,朝廷方面感到十分畏惧,将要派遣侍中前去洛阳制止,扬州刺史王述说∶ "桓温不过是以虚声来威胁朝廷而已,迁都洛阳,不符合实际情况。朝廷但听从无妨,这事自然是不可能实行的。"当时的洛阳已经饱经战乱,桓温身处其地之后,对此是深有感触的,他只好又上书请求将洛阳的钟虞运回建康,王述说∶"永嘉之乱,暂都江东,正要荡平四海,还于旧都,如果不能,那也要首先将皇陵南迁,不应先考虑钟虚的事情。"桓温无言以对。
由于谢尚的徐豫部队未能抵达洛阳,桓温本人也不愿意离开荆州老巢,驻守在洛阳第一线,因此,他只好留下颖川太守毛穆之(毛宝长子)、都护陈午、河南太守戴施共率两千人,象征性地驻守在洛阳,护卫皇陵。然后,桓温将姚襄及洛阳周边降民共计三千多家迁到江汉平原,押着周成回师。同年十一月,东晋朝廷派遣散骑常侍车灌、龙骧将军袁真等人持节进入洛阳,修复西晋五陵。
桓温这次持续三个多月的北伐就这样结束了,在桓温大军南撤之后,史称"司、豫、青、兖复陷于贼"。