永嘉四年六月,刘渊死,其子刘和继位,另一子刘聪弑而代之。刘聪遣其帝刘璋与石勒共同进犯徐州、兖州,洛阳四面楚歌,其势危矣。
当时洛阳城内缺粮,东海王号召天下兵马入京勤王,结果没人来。最后司马越迫不得已,只好自己亲自披挂上阵,出讨石勒。怀帝对司马越说:“现在贼兵进犯,王室蠢蠢欲动,恐怕皆有异志,你走了以后,京师怎么办?”司马越回到:“现在贼兵已逼近洛阳,如果不能将他们击败于外围,那么京师就更加危险了。”于是,司马越率兵出许昌前往迎敌。京师缺少守卫之兵,盗贼公行,不能自立。
周馥督扬州,镇守寿春,他向上奏请圣上迁都寿春,还献上了自己据敌的计划。他越过东海王直接上书皇帝,司马越知道后非常生气。于是司马越召周馥与淮南太守裴硕,周馥不肯去,让裴硕先行。裴硕与周馥不一条心,以周馥违命为由,举兵袭越,被周馥打败,退守东城。裴硕向司马睿求救,司马睿遣甘卓、郭逸去攻打周馥,安丰太守孙惠也率兵去救,周馥大败,逃到项城,被新蔡王拘捕忧愤而死。
南方叛乱既平,东方战乱又起。永嘉五年,怀帝密诏苟晞讨伐司马越。三月,又下诏全国书司马越罪状,让各镇起兵讨伐,晞为大将军。司马越忧愤成疾,死在项城。他死之后,襄阳王司马范接替他,将他藏在东海。司马越率众离京时,让太尉王衍负责保卫京师,他死之后,众人推衍为主,率众东下,后被石勒军打败杀死。右卫李晖听说司马越死了秘不发丧,带着裴妃和司马越的世子逃出洛阳。被石勒打败,宗室三十六王全部被杀,到这时晋的兵力已经被消磨的差不多了。
五月,苟晞上表请怀帝迁都到仓垣,皇帝本来要答应的,但是众臣害怕潘滔,不想迁到那去,再加上宫中的人贪恋财物也不想走。洛阳城内饿殍遍地,竟出现了人吃人的现象,百官流亡者十之八九。怀帝带领朝士数十人出宫欲往仓垣而去,不想被盗贼劫掠,不得已又回到宫中。呼延晏率兵攻打洛阳,洛阳甚急,帝准备好船只打算经济河东逃,结果船都被呼延晏烧了。六月,洛阳被攻陷,刘聪封怀帝为会稽公。没过多久,怀帝被杀死,时年三十岁。