公元301年正月,司馬倫龍袍加身,做起皇帝來。他名義上尊惠帝為太上皇,實際上將其幽禁在金墉城。另立其子、弟為“王”,其他同黨也都登上卿、將職位。司馬倫稱帝,激起各諸侯王的強烈反對。齊王司馬冏傳檄各地,聯合成都王司馬穎、河間王司馬顒等共同起兵,討伐司馬倫。由於諸王的投入,“八王之亂”開始發展為一場大混戰。
司馬倫一麵命將軍孫輔、孫會迎戰,一麵命人穿著羽衣在嵩山詐稱仙人下凡,陳述司馬倫統治將維持久遠,以迷惑大眾。
司馬穎軍前鋒至黃橋(今河南淇縣),與孫會軍交戰失利,死傷1萬餘人;又在溴水(今河南濟源、孟縣境黃河支流漭河)大戰一場,孫會終於大敗南逃。司馬穎乘勝長驅渡過黃河,協助助司馬冏戰敗張泓。雙方在洛陽附近酣戰60多天,死亡近10萬人。最後司馬倫兵敗被殺,惠帝複位。宣詔齊王司馬冏為大司馬輔政。
司馬冏掌握大權以後,沉溺於酒色。公元302年,河間王司馬顒上表列舉司馬冏罪狀,揚言率兵10萬,將與成都王司馬穎、新野王司馬歆、範陽王司馬虓共會洛陽城,並聯合長沙王司馬乂一起行動。八王之中,司馬乂是最有才略的一個,也有政治野心。他利用時機搶先攻入洛陽。當晚,洛陽城中飛箭如雨,火光衝天,群臣死者相枕於路,一片混亂,激戰三日,司馬乂大敗。司馬冏殺了司馬冏,暴屍3日,控製了朝政大權。
司馬顒原以為司馬乂力量微弱,會被司馬冏擒斬,他好以此為借口討滅司馬冏,沒想到事與願違,便於公元303年,聯合司馬穎共同攻打司馬乂。這一仗從8月打到10月。司空東海王司馬越利用禁軍抓獲司馬乂,密告司馬顒的部將張方,用火將司馬乂活活烤死。
到此,八王已死五王。而爭奪統治權的鬥爭還在司馬穎、司馬顒、司馬越三王之間猛烈展開。
司馬乂死後,成都王司馬穎被封為皇太弟,任丞相、都督中外諸軍事,住在鄴城(今河北臨漳西南)遙控朝政;司馬顒為太宰,居長安;東海王司馬越認為自己殺司馬乂有功,卻沒撈到好處,便挾持惠帝討伐司馬穎。
鄴城人聽說司馬越率10萬人已到安陽,驚慌失措。司馬穎派石超率1萬兵眾迎戰。在蕩陰(今河南湯陰)大敗司馬越。雙方交戰時,惠帝身邊侍從全都逃散,致使惠帝身中3箭,麵頰受傷被俘。司馬越逃回東海封國。不久,幽州刺史王濬帶領烏桓、鮮卑兵與並州刺史司馬騰聯軍10餘萬進攻鄴城。司馬穎又挾惠帝乘坐牛車南逃洛陽,被張方俘獲至長安。司馬顒更立司馬熾為皇太弟,與司馬越共同輔政。
公元305年,東海王司馬越以“奉迎天子還複舊都”為借口,再度起兵,次年攻入長安。司馬顒單馬敗逃太白山。司馬穎在去鄴城途中被頓丘太守馮嵩抓獲,範陽王長史劉輿矯詔賜司馬穎死。司馬越又以司徒官職召司馬顒入洛陽,於途中殺之。隨後又毒死惠帝,擁武帝第25子(晉武帝共26個兒子)司馬熾為帝,這就是晉懷帝。“八王之亂”自此結束。
“八王之亂”從賈後專政開始至懷帝即位為止,曆時16年。他們為爭奪統治權同室操戈、相煎太急,把戰火從洛陽、長安燒遍黃河南北,奪走數十萬人的生命。造成的禍難之大,曠古未聞,給建立不久的西晉王朝以毀滅性的打擊,不僅從內部挫傷了它的元氣,並因無暇顧及邊防,而使北方少數民族的貴族能夠乘機起兵,增強勢力,對此後曆史產生了巨大的消極作用。