祁弘带领部队进入函谷关后,成都王司马颖看大势已去,仓皇逃奔到新野(今河南新野县)。司马越命令南中郎将刘陶前去捉拿司马颖,司马颖不敢停留,北渡黄河逃到朝歌(今河南淇县)。在这里,他召集了属下几百人,准备去投靠旧部公师藩。走到半路,他们一行被顿丘(今河南清丰县)太守冯嵩抓住,冯嵩不敢擅自处置,便把他们押送到邺城,交给了范阳王司马虓。司马虓不忍心杀害这个先帝最喜欢的儿子,只是把他暂时关押了起来。
公师藩准备自白马津(今河南浚县)南渡黄河,遭到兖州刺史苟晞的拦截,混战中被杀死。
永兴三年(306)十月,范阳王司马虓暴病而亡,年三十七岁,死因不得而知。因为过去司马颖在邺城拥有巨大声望,长史刘舆怕司马虓的死讯传开后会引起巨变,所以秘不发丧。为绝后患,他派人假冒钦差,赐死了司马颖和他的两个儿子,司马颖死时年二十八岁,“八王之乱”中第六个王的生命就此终结。司马颖被俘后,他的旧部一哄而散,各奔前程,只有卢志不离不弃,司马颖父子死后,还是卢志为他们父子收尸安葬。卢志的忠贞行为得到司马越的欣赏,征召他为军咨祭酒。
司马越本也打算任用刘舆,但有人对他说:“刘舆这个人人品不好,就像油污一样,谁接近他都会受到污染。”所以刘舆刚刚到来时,司马越有意疏远他。刘舆一看自己不受待见,就暗暗努力想要出头。他是个有心人,秘密查阅了全国军事和仓库、牛马、器械、地形地貌等资料,把这些一一默记在心。当时全国形势多变,司马越经常召集属下议事,众人常常对时局一筹莫展,想不出来好的办法,这时候刘舆就会站出来,按照之前对全国军事等的了解,分析得头头是道。司马越对他的好感更胜,变得越来越欣赏他,后来还任命他担任左长史这个重要职位,作为自己的参谋助手。
刘舆请求司马越让他弟弟刘琨镇守并州,以此加强北方的防务力量,于是司马越在请示惠帝后,任命刘琨为并州刺史。虽然刘舆的这一人事建议有私心,但从以后刘琨在后方坚持和匈奴战斗看,这一任命也是正确的。原并州刺史司马腾升任车骑将军,调任都督邺城诸军事,镇守邺城,填补司马虓去世后留下的空缺。
永兴三年(306)十一月十七日夜,惠帝司马衷在吃夜宵的时候吃了一个饼,出现了腹泻、呕吐的中毒症状,御医抢救无效,第二天在显阳殿驾崩,结束了自己四十八年的懵懂生活,后被葬于太阳陵。
是谁害死司马衷的?当时人们都怀疑是司马越,但这个问题一直没有确切答案,成了历史未解之谜。司马衷驾崩,按说该让皇太弟司马炽继位,但皇后羊献容想到自己是司马炽的嫂子,如果司马炽继位,自己就做不成皇太后了,于是打算拥立废太子清河王司马覃(司马衷的侄子,前皇太孙司马尚去世后曾被立为皇太子)。侍中华混把这十万火急的消息通知了太傅司马越,司马越立即宣召命皇太弟司马炽入宫。司马覃接到羊皇后的通知,人都已经赶到了尚书省,但突然发现气氛不对。他是个聪明人,知道保命要紧,就捂住肚子连连叫痛,称病回去了。
光熙元年(306)十一月二十一日,年方二十三岁的司马炽登基,大赦天下,是为晋怀帝。他尊奉皇后羊献容为惠皇后,让她居住在弘训宫;追封母亲王才人为皇太后;册立妃子梁氏为皇后。
太傅司马越控制了朝政,他环视天下,发现大对手司马颙还活在世上,就下诏任命河间王司马颙为司徒,命他即日回京任职。司马颙看到诏书很高兴,以为司马越不计前嫌要和自己携手共事,高高兴兴地和家眷启程赴任了,但当他们走到新安(今河南渑池县)的时候,司马越的弟弟南阳王司马模派部将梁臣在路上拦住车马,然后登上马车,把司马颙活活掐死了,同时被杀的还有司马颙的三个儿子。
八王之乱的第七个王就此丧命,大权掌握在了第八个王司马越的手中,这场司马诸王之间的纷争到这里也就结束了,持续了十六年之久。这是中国历史上最严重的皇室内乱之一,死亡人数动辄以万计,国内经济遭到严重破坏。变乱后期,朝廷已无力控制全国形势,造成大规模少数民族内迁,特别是成汉和汉赵这两个少数民族政权的建立,更是为西晋敲响了丧钟。