司馬顒升郅輔為安定太守,把人頭送給司馬越,想和司馬越議和。司馬越收下張方的首級後,卻不答應議和。遣回使者後,司馬越立刻令幽州將領祁弘做前鋒,去長安接回惠帝。並派部將宋胄攻打洛陽,劉琨攻打滎陽。劉琨帶著張方的首級來到滎陽城下,將首級呈給守將呂朗,呂朗急忙開城投降。宋胄在途中碰到鄴城將領馮嵩奉命前來,二人於是一同趕往洛陽。司馬穎只好往長安逃去。司馬穎逃到華陰時,聽說司馬顒和司馬越已經議和,擔心司馬顒謀害自己,就不敢再往西逃。司馬顒見司馬越並沒有退兵,開始後悔殺死張方,再仔細盤問郅輔,才知道事情的真相,一怒之下就把郅輔殺了。司馬顒又派弘農太守彭隨和刁默率兵抵禦司馬越,並讓馬瞻和郭偉做後應。彭隨和刁默到了關外,迎面遇到祁弘的軍隊。祁弘旗下的鮮卑兵把彭、刁的部下衝成數截,彭隨、刁默兩隊死傷無數。祁弘行軍到霸水,又碰上馬瞻和郭偉,將兩軍打敗。兵敗的消息接連傳到關中,司馬顒嚇得魂飛魄散,不知所措。不久,有人來報,說敵軍已經深入。司馬顒揚鞭逃跑,僥倖出城,旁顧四周,心想孤身一人不能遠去,就策馬向太白山奔去。
祁弘殺進長安,城內無人敢擋,任由鮮卑兵燒殺搶掠。百官都逃到山裡去了,惠帝還在行宮,沒人保護。剛好司馬越隨後趕到,禁止劫掠,進宮拜見,又召集百官,宣布即日東歸。命太弟太保梁柳為鎮西將軍,留守關中,自己則帶領各路軍隊奉惠帝回洛陽。到了洛陽,惠帝登上舊殿,朝見百官。司馬越帶領護駕諸臣草草拜謁,便算完事,轉拜太廟,也是蛛網遍布,滿眼蒼涼。回到宮中,宮內空曠寂靜,只剩下三五個老宮婢及六七個太監。惠帝寂寞得很,草草下了一道詔書,派宮監到金墉城迎回羊氏。羊皇后又驚又喜,略略梳洗,便與來使乘車入宮。桃花無恙,人面重逢,惠帝歡天喜地,仍令她主持中宮,並頒詔內外。
永興三年六月,又改元為光熙元年。惠帝下詔封賞迎駕諸臣,升司馬越為太傅;范陽王司馬虓為司空,仍駐鎮鄴城;司馬模為鎮東大將軍,鎮守許昌;王浚為驃騎大將軍,統領東夷河北軍事,兼任幽州刺史。此外如皇太弟以下,仍然各司其職。對司馬穎和司馬顒,只下了一道赦書。
說也奇怪,惠帝在長安時,江東出了一個假皇太弟,居然承制封官,占據一方。這個假皇太弟,便是丹陽人甘卓。甘卓本來是吳王的隨身侍衛,曾和陳敏等人一起討伐石冰。石冰後來被陳敏的部下殺死,甘卓因此得功受封為都亭侯。東海王司馬越請他做過參軍,後來因天下大亂,甘卓便棄官東歸。甘卓走到歷陽時,遇到了陳敏,二人闊別數年,意外相逢,自然要敘敘舊。陳敏心裡已經有一個打算,但當時沒有對甘卓說,只是表現得和甘卓很是親熱,並提議兩家結為親家。甘卓答應下來。不久之後,男婚女嫁,當即成禮。不料陳敏卻和甘卓商量,要他假充皇太弟。原來陳敏打敗石冰後,認為自己無人可敵,便想占據江東。陳敏的父親多次勸阻,陳敏卻態度堅決。司馬越起兵時,起用陳敏為右將軍。靈璧一戰,陳敏先是被打敗了,後來得到劉琨相助才轉敗為勝。陳敏回到歷陽後,開始召集將士,準備叛亂。剛好碰到了甘卓,陳敏想讓他做幫手,於是先結婚約,再和他商議。甘卓已經中計,只好將錯就錯,做起了「皇太弟」,命陳敏為揚州刺史。陳敏派二弟陳恢及部將錢端往南攻取江州,派三弟陳斌往東奪取東部各郡。江州刺史應邈、揚州刺史劉機、丹陽太守王曠聞風而逃,陳敏占據江東。然後陳敏遍徵名士,召顧榮為右將軍,賀循為丹陽內史,周圯為安豐太守。賀循和周圯都稱病不肯赴任。顧榮擔心不聽從命令會觸怒陳敏,便去見陳敏。陳敏聽說顧榮肯應召,立刻把顧榮迎進。寒暄過後,陳敏便和顧榮談起招募的事情。顧榮建議他要以誠相待,不記小恨,不聽讒言。陳敏聽了,起座謝教,令顧榮擔任丹陽內史。然後令眾人推自己為楚公,統領江東軍事,兼任大司馬。陳敏又謊稱接到密令,順江入漢,奉迎惠帝,當下率兵出發。
鎮南將軍劉弘派江夏太守陶侃和武陵太守苗亮戍守夏口,又令南平太守應詹調集水師回應陶侃等軍。這時,太宰司馬顒還在關中,他令順陽太守張光帶著五千步騎,去荊州協助劉弘。劉弘讓張光前往夏口,與陶侃合兵。陶侃和陳敏同郡,又和陳敏同年當官。隨郡內史扈懷擔心陶侃與陳敏相互勾結,對荊州不利,便偷偷對劉弘說:「陶侃手握強兵,一旦造反,荊州就保不住了。」劉弘笑了笑說:「陶侃忠心耿耿,盡可放心。」陶侃知道後,就將兒子陶洪和侄子陶臻送給劉弘做人質,以表忠心。劉弘讓陶洪做參軍,並出資送陶臻回去。陶臻臨行前,劉弘囑咐他盡心侍奉祖母。陶臻走後,劉弘又提升陶侃為督護,讓他安心抵禦陳敏。陶侃心存感激,於是整軍待敵。陳敏的弟弟陳恢受了陳敏的偽令,掛了荊州刺史的頭銜,進逼武昌。陶侃用運船做戰艦,載兵抵禦陳恢。交戰中,陶侃連連戰勝。陳敏又派錢端進攻,陶侃聯合張光、苗亮兩軍,大勝錢端。陳敏見狀,只好收兵退去,不敢再窺視江漢。
劉弘讓張光回長安,並向司馬顒上疏陳述各位將軍的戰功,把張光列在首位。並派張光西去。張光入關後,司馬越的軍隊已經到達長安。劉弘令參軍劉盤去與司馬越會合。司馬越升劉弘為車騎將軍。劉弘積勞成疾,準備辭官,辭呈還沒送上,就去世了。劉弘在江漢一帶很有威信,每次打了勝仗總是歸功於別人,失敗了卻歸咎於自己;發生事情,總是親自寫信給部下,仔細叮嚀。部下都很敬重劉弘,願意為他效命。朝廷賜劉弘諡號「元」,追封他為新城郡公。劉弘的司馬郭勱因劉弘病故,想把成都王司馬穎接到襄陽。劉弘的兒子劉璠身披孝服,率兵殺死郭勱,保住了襄陽。太傅司馬越寫信給劉璠,對他大加稱讚,並調高密王司馬略鎮守荊州。
南方的寧州,因為李氏兄妹二人而轉危為安。寧州常年饑荒,瘟疫不斷。邊疆的蠻夷勢力逐漸強大,趁機在寧州大肆劫掠,甚至圍逼州城。寧州刺史李毅身患重病,聽說夷人進攻,急上加急,竟然氣絕身亡。寧州百姓都很惶恐,這時一位年僅十五歲的女子,滿身縞素來到州府門口,召集兵民,流著淚宣誓說:「父親身亡,小女子當和全城同生共死,奮力抵抗夷虜。」眾人一看,原來是刺史的愛女李秀,不由得肅然起敬,齊聲回應。李秀又說:「我只是一個弱女子,恐怕難以制服夷虜,希望各位推舉一名主帥,統領軍政,以保萬全。」眾人見她氣宇不凡,都推她為主帥。李秀大聲道:「各位推我暫做主帥,試想保住全城責任何等重大,敢問各位肯聽我命令嗎?」眾人齊聲答道:「願意!」李秀便指揮士兵分隊守城,並親自寫了幾條賞罰條例,貼在城門上。李秀身穿銀鎧,腳跨蠻靴,左持寶劍,右執令旗,整天登城巡邏,毫不鬆懈。一看到夷人戒備有所鬆弛,便出兵攻打。夷人雖然氣餒,但一時還不肯退兵。不久,城內糧食斷絕,沒有吃的,只能用老鼠、草根做口糧。李秀卻堅定如故,士兵很受鼓舞,誓死抵禦。剛好這時,李毅的兒子李釗從洛陽趕來,帶著幾百兵馬來援救寧州。李秀從城內殺出,與李釗內外合攻,終於殺退夷虜,保全了寧州。李釗本在洛陽做官,李毅去世後,李秀向李釗報喪,並把夷人猖獗的情況告訴了他。於是李釗招募勇士,連夜趕來營救寧州。李秀當即把保城大任交給李釗,眾人也都願意推李釗為主帥。李釗暫時從命,並派使者去洛陽,請求寧州另派刺史。朝廷命王遜為南夷校尉兼任寧州刺史。王遜任職後,安撫饑民,擊退夷人,李釗兄妹便回家守喪去了。
成都王司馬穎從洛陽逃到華陰後,聽說惠帝回了洛陽,先是折回南行,後來又渡河北上,準備投靠公師藩。頓邱太守馮嵩在路上截住司馬穎,把他送到鄴城囚禁起來。公師藩得知後,親自帶兵攻打鄴城,司馬虓急忙令兗州刺史苟晞帶兵禦敵。交戰中公師藩被殺,汲桑、石勒等人逃跑。不久,司馬虓在鄴城病死。長史劉輿擔心鄴城人會釋放司馬穎,於是令人假充朝使,逼司馬穎自盡,然後為司馬虓發喪,並報告朝廷。司馬穎的兩個兒子也被殺死。司馬越徵召劉輿為左長史,和他商量鎮鄴事宜。劉輿請求司馬越調東瀛公司馬騰鎮守鄴城,推薦自己的弟弟劉琨任并州刺史,委鎮北方。司馬越於是命劉琨為并州刺史,升司馬騰為東燕王兼任車騎將軍,統領鄴城軍事。
河間王司馬顒逃進太白山,一直不敢露面。故將馬瞻等人召集散卒,混入長安,殺死關中留守梁柳,然後和始平太守梁邁一起去太白山接司馬顒進城。弘農太守裴頠、秦國內史賈龕和安定太守賈疋又起兵攻打司馬顒。馬瞻和梁邁立刻率兵抵禦,因寡不敵眾,雙雙戰死。幸好鎮守馮翊的平北將軍牽秀趕來,才把三鎮士兵全部擊退。太傅司馬越聽說司馬顒入關,馬上派督護麋晃帶兵征討,麋晃在路上接到三軍敗退的消息,不敢進軍。誰知司馬顒又遭遇內變,長史楊騰想背叛司馬顒歸附司馬越,於是假傳司馬顒的命令,令牽秀罷兵。牽秀出營迎接,卻當頭挨了一刀,倒地身亡。這一刀便是楊騰下的毒手。楊騰騙牽秀的屬下,說自己是奉命行事。士兵們見牽秀無辜被殺,對司馬顒更加不服,不肯為他效命。楊騰把牽秀的首級送給麋晃,麋晃正打算進關,都城卻傳出急詔,說惠帝暴崩,太弟登基,大赦天下。知道不必去討罪了,麋晃樂得在途中等候,靜待後命。
據說惠帝是被太傅司馬越毒死的。一天晚上,惠帝在顯陽殿裡吃了幾個餅子,不一會兒,忽然肚子絞痛起來。內侍召進御醫時,惠帝已經不省人事了。御醫診視六脈,發現脈搏已如游絲,於是搖頭說:「罷了!罷了!」宮人問是什麼病,他不敢說明,等窮究細問後,他才輕輕地說出「中毒」二字,然後一溜煙地出宮去了。究竟毒是誰下的,無從追究。不過司馬越掌握政權後,對皇帝暴崩的事一點也不追究,只令侍中華混趕緊召太弟司馬熾繼位。說他可疑,還有一個原因,便是皇后羊氏擔心太弟司馬熾被立為皇帝,自己只能做皇嫂,做不了太后,於是密召清河王司馬覃進入尚書閣,有意推立司馬覃。恰巧司馬熾也進來了,又有太傅司馬越在旁擁立,羊氏一時尷尬,只好閉口不言,任司馬熾即位。照此看來,內外早已明爭暗鬥,羊皇后想立司馬覃,司馬越想立司馬熾,只可憐那呆皇帝被人無辜毒死。惠帝在位共十六年,改元七次,享年四十八歲。
太弟司馬熾是武帝的幼子,繼承兄位,大赦天下,即晉懷帝。尊諡先帝為「孝惠皇帝」,號羊皇后為「惠皇后」,讓她移居弘訓宮;追尊生母太妃王氏為皇太后,立妃梁氏為皇后,命太傅司馬越輔政。司馬越請出詔書,封河間王司馬顒為司徒。司馬顒應詔前去洛陽,當下攜著家眷上車,出關東行。路過新安時,忽然來了一班兇悍的武夫,手持利刃,攔住司馬顒的去路,大聲喝道:「快留下腦袋!」司馬顒被嚇呆了,不得不硬著頭皮,戰慄地問來人:「你們是誰,居然敢攔我的車?」來人卻反問司馬顒是誰。司馬顒說:「我是河間王,被封為司徒,現在奉詔去洛陽。」來人哄然大笑,跳上車,把司馬顒按倒,扼住他的喉嚨。司馬顒的三個兒子上前相救,卻被這班莽夫拳打腳踢一陣,相繼斃命。司馬顒被扼了很久,氣不能出,兩手一抖,雙足一伸,一命嗚呼!