略阳临渭地区氐族头领蒲洪,遣使者来向汉称臣;雍州流民王如也向汉称藩。汉国新皇帝刘聪满心欢喜,一一收纳,又命令石勒为并州刺史去搞定河北。晋朝并州刺史刘琨因请鲜卑部首领拓跋猗卢帮忙抵抗石勒一事而上书朝廷;但是司马越对他有猜忌,没有同意。
司马越怕青州都督苟晞乘机叛乱,占据并州,就令刘琨固守并州,不得轻举妄动。不久,汉国国主刘聪派出的攻晋大军逼近洛阳城。城内人困马乏,粮食空虚,看来是抵挡不住了。怀帝派出使者去各方求援,结果大多不愿意应诏,只有征南将军山简派督护王万赶来救援,但中途在涅阳就遭流贼王如拦截,被打得落花流水。刺史王澄号召各军共赴国难,但他派出的前锋却在宜城得知襄阳被汉军围困而折返回来。石勒攻占襄阳,又乘势攻破江西垒壁四十余所,再回到襄阳驻守。
晋朝把握朝政的太傅司马越已失人心,又不断听到警报,于是想要立功服众,就穿着军装去请求讨伐石勒。怀帝也没多留他,就让他出征了。司马越留下了自己的王妃裴氏和儿子司马毗,又派龙骧将军李恽、右卫将军何伦留下守卫京师,长史潘滔为河南尹总管留守事宜;接着调集了兵士四万人,当即出发,将朝中的名将劲卒全部带走了。整个洛阳城只剩下老弱病残;府库无财,仓库无粮,盗贼肆虐,整个城池空空如也。司马越出发后,又揽过豫州刺史来自己当,改任原豫州刺史冯嵩为左司马,向各处传檄文,可是没有一州一县起兵响应。怀帝本来以为司马越出征了,自己活动起来就方便了,谁知那个何伦居然比司马越还嚣张,日夜监视怀帝,就像监视囚犯一样。东平王司马楙没有跟着军队走。他偷偷地给怀帝说可以派卫士去偷袭何伦,然而卫士又是何伦的耳目,反而先去报告何伦。何伦于是带剑入宫,逼怀帝交出主谋。怀帝没办法只有将司马楙说了出来。还好,司马楙得到风声早早逃走了。
汉兵日渐逼近洛阳,朝廷里议论着要不要迁都,司徒王衍一直阻拦。扬州都督周馥直接给怀帝上书,请迁都寿春。司马越得知周馥直接上书而不通过自己时非常生气,当即下了一道军符,要淮南太守裴硕和周馥一同入京。周馥知道自己得罪司马越了,不愿去,但叫裴硕先走。裴硕诈称自己收到密报,要拿下周馥,结果反被周馥打败。琅琊王司马睿派遣扬威将军甘卓等攻打寿春,周馥不敌,只有逃走。豫州都督、新蔡王司马确邀周馥到许昌避难,趁机将他软禁,直把周馥给活活气死了。接着石勒攻克许昌,司马确被杀,许昌被攻陷。
许昌丢失,洛阳上下更是慌乱。寝食难安的怀帝立即传手谕叫各镇的将领连夜前来救援。青州都督苟晞接受诏书后,立即叫人写了封檄文,列出司马越的所有罪状和自己的所有功劳。怀帝拿到檄文连忙诏苟晞入朝,苟晞就邀同其他州县共同勤王。正好这时,汉国将领王弥派左长史曹嶷准备攻打青州。曹嶷攻破琅琊,连营十几里,逼近临淄。苟晞登上城楼看到,认为失败是必然的了,匆忙弃城而逃。
怀帝得到苟晞的檄文后,日夜盼望他能够出兵来帮助削除司马越的大权,但是望穿秋水也没等到。永嘉五年的春天,在朝中的何伦更加猖狂,作威作福,像贼一样到处打家劫舍,甚至到广平、武安两公主家里去抢夺淫掠。怀帝忍无可忍,又给苟晞下诏,叫他征讨司马越及其同党。可惜,朝臣带信回来的途中,被司马越部下逮住,押到了司马越面前,搜出了诏书和苟晞的上表。司马越不禁大怒道:“我早怀疑苟晞上蹿下跳地搞密谋,果然不出我所料,今天截获,可恨呀!”于是令中郎杨瑁为兖州刺史,与徐州刺史裴盾共同讨伐苟晞。苟晞却下手更快,秘密派杀手潜入洛阳,把司马越的几个党羽偷偷杀了。偏偏此时司马越身在项城,因内外交困,忧愤成疾,卧床不起,很快就奄奄一息了。他临死时召王衍入内,委托身后事。他死后,王衍没有公布消息,打算秘密将遗体葬到司马越的东海封地。王衍派襄阳王司马范拉着司马越的棺材向东海进发了。但消息还是传到洛阳,何伦和李恽见没有了靠山,就仓皇逃走。同时出行的还有王妃裴氏母子和宗室的四十八王。因为怕汉军打来,城里的百姓都跟着走了。只有怀帝和宫里的人还呆在洛阳,孤立无援。怀帝想到今天的状况都是那个司马越造成的,于是追贬司马越为县王,诏授苟晞为大将军大都督,督领青、徐、兖、豫、荆和扬六州诸军事。
石勒知道司马越死了,立即赶去偷袭送葬队伍。王衍根本不懂用兵,完全没有任何防备;襄阳王司马范等也都未曾上过沙场,所以面面相觑不知该怎么办好。还是将军钱端带领士兵冲上前去,但敌不过剽悍的石勒军队而战死沙场。石勒又指挥部队围住王衍等人。王衍这边虽不下万人,可却没有一个人能出来指挥作战。大家都慌忙逃走,自相践踏,死伤无数。结果那些王侯连同王衍一同被绑在一起,押入石勒营帐。在帐里,王衍卖国求荣,毫无廉耻,石勒则讥讽挖苦,说得王衍无言以对。其他人都很怕死,做出可怜的样子;只有襄阳王司马范神情刚毅,毫无惧色。石勒就叫人给他留住全尸。当天,所有被抓获的人统统进入一座民舍集中监禁,半夜的时候,忽然有人推倒墙壁。瞬间,覆巢无完卵,没有人可以活下来,就像是一座乱尸堆。石勒又叫人劈开司马越的棺材,烧了尸体,把骨灰倒掉,说道:“晋朝大乱,就是因为这个人。现在我为天下人泄恨,所以烧了尸体以告天地。”
时为永嘉五年(公元311年)。严格地讲,直到此时司马越死,晋朝“八王之乱”才算真正完结。这八个王按,《晋书》所说应该是:汝南王司马亮是宣帝司马懿之子,为楚王司马玮所杀;楚王司马玮是武帝炎子,为贾后所杀;赵王司马伦是宣帝懿子,奉诏赐死;齐王司马冏是齐王司马攸子,为长沙王所杀;长沙王司马乂是武帝炎子,为张方所杀;成都王司马颖是武帝炎子,为范阳长史刘舆所杀;河间王司马颙为南阳王司马模部将梁臣所杀;东海王司马越病死于项城,尸体为石勒所焚。