司馬倫大權在握,開始排除異己,朝中老臣張華等皆被殺害,一時間竟無一人敢反對司馬倫。而司馬倫的野心也越來越大,竟生出了篡逆之心。淮南王司馬允知道司馬倫妄圖廢立皇帝之后,便暗養死士,伺機準備除掉司馬倫和孫秀等人,然而事情敗露,司馬允被迫提前起事,結果被司馬允陣前被殺,隨從四散而逃,其黨羽也多被誅殺。司馬倫與孫秀借機大肆株連,數千人因此被殺,這就包括歷史著名的美男子潘岳和留下斗富惡名的石崇。
此時的司馬倫權勢達到了頂峰,不久之后他偽造詔書自封相國,手下黨羽也皆被封賞,朝廷成了他的一言堂。公元301年一月,趙王司馬倫正式廢惠帝,自立為帝,并將晉惠帝軟禁在了金墉城。
司馬倫的廢立行徑,引起了其他諸王的不滿。在許昌的齊王司馬冏,聯合河間王司馬颙(司馬懿三弟安司馬孚之孫)、成都王司馬穎(司馬炎第十六子)、常山王司馬乂(司馬炎第六子)傳檄天下,起兵討伐司馬倫,一時間天下云集響應,擁兵近20萬。大戰進行了兩個多月,死傷多達十萬余人,最終孫秀等人戰死,司馬倫兵敗被俘,后被賜酒毒死于金墉城。
司馬倫已死,晉惠帝復位,四王以復位之功入主朝廷,執掌大權,朝堂暫時平靜下來。然而,還沒過多久,四王之間也起了齷齪。司馬冏擔任大司馬一職,主掌朝權。司馬颙、司馬穎則掌握重兵。司馬穎接受謀臣盧志的策略,主動離開洛陽,返回封地鄴城,在鄴城擁兵自重,四處收買人心。一時間,司馬穎的威望大增,頗得民心。同時由于太子以及太子的兒子都死于謀殺,按照繼承人順序,司馬穎成為離皇位繼承人最近的那個人。
而同樣擁有野心的司馬冏當然對此頗為不滿,于是他擁立了晉惠帝年僅八歲的侄子司馬覃為太子,并自任太子太傅。同時,為了對抗司馬穎等親王,又加封自己一派的東海王司馬越(司馬懿四弟司馬馗之孫)為司空。
一年后,也就是公元302年,河間王司馬颙接受長史李含建議,率先發難。司馬颙派李含、張方吞并洛陽城外,同時傳檄諸王,命長沙王司馬乂征討司馬冏。雙方攻伐數日,最后司馬冏大敗,司馬冏被殺,隨之齊王司馬冏一派被滅,長沙王司馬乂掌控朝權,河間王回兵長安。
司馬颙對于司馬乂獨攬大權心懷不滿,多次派人暗殺。公元303年八月,司馬乂誅殺了司馬颙的親信李含,司馬颙以此為借口,聯合成都王司馬穎起兵征討。司馬颙派張方帶兵7萬多、司馬穎帶兵20余萬,黑壓壓的大兵奔向洛陽。司馬乂挾天子之勢,大敗司馬颙、司馬穎聯軍,斬殺六萬余人。
按照這么下去,最后取得勝利的還是長沙王司馬乂。但關鍵時刻,本來與司馬乂一伙的東海王司馬越突然反水,率兵將司馬乂拘禁于金墉城,并開城迎接司馬颙、司馬穎聯軍進城。不久,司馬乂被張方放在火堆上活活烤死,司馬乂一派被滅。
征討成功之后,朝權被三王控制。司馬穎還師鄴城,并自任任丞相,在鄴城遙控掌握朝中大權。不久又廢掉太子司馬覃。司馬颙則乘機獻媚,上書要求封司馬穎為皇太弟。司馬穎以晉惠帝名義下詔同意。
不久,司馬颙正被雍州刺史攻擊,被迫召張方回師長安,協助自己對戰雍州刺史。張方素來為人殘暴,長沙王司馬乂就是被他活活用火烤死的。張方臨走之前,劫掠洛陽百姓數萬人,在回軍途中,因部隊缺糧,殘暴的張方竟然下令將百姓殺害,混在牛肉中充當軍糧。兩晉時期,這類殘暴事情多次發生,而張方恐怕是就是 “兩腳羊”的源頭始作俑者了。
東海王司馬越一直在洛陽任職,但是朝廷決策權卻歸在鄴城的司馬穎,對此,他甚是不滿。公元304年秋天,司馬越挾持晉惠帝,率兵10多萬進攻鄴城討伐司馬穎。混戰中,司馬穎大敗司馬越,并且俘虜了晉惠帝。而在司馬越進攻司馬穎的同時,司馬颙派張方偷襲了洛陽。司馬越只能逃回自己的封地東海。
司馬越敗后,幽州都督王浚與司馬越的親弟東瀛公司馬騰聯合鮮卑、烏桓騎兵偷襲鄴城,很快就攻破了鄴城,并在城中大肆劫掠,大量婦女被裹挾到了軍中,王浚擔心進軍速度,下令軍中不得私藏婦女,諸族騎兵就將被劫掠的婦女推到了河中,八千余人喪命水中。司馬穎大敗之后,只帶了數十人挾持著晉惠帝逃往洛陽。
到達洛陽后,司馬穎作為敗軍之將,前權盡喪,張方則掌控了朝政。不久,張方挾持著晉惠帝、成都王司馬穎、豫章王司馬熾等回到了長安,在臨行之前,縱兵大肆劫掠,將洛陽洗劫一空。
到達了長安,司馬颙就自然成了朝政的掌控人。不久,他廢除了司馬穎的皇太弟身份,并將其軟禁,隨后立豫章王司馬熾為皇太弟,自己則設置百官,獨攬朝權。
公元305年,司馬颙又以晉惠帝名義,罷免東海王司馬越的太傅身份。司馬越經過一陣的蟄伏之后,東山再起。于是當年七月,他以張方挾持惠帝為罪名發兵征討司馬颙。司馬越一路高歌猛進,而司馬穎的舊部也趁機造反。司馬颙大為驚恐,一方面釋放了司馬穎,并讓他前去招撫舊部,另一方面派人殺了張方以向司馬越求和。然而司馬越要的哪里是張方的人頭,他要的是權利,要的是皇位。
公元306年5月,司馬越的前鋒祁弘攻入長安,晉惠帝再次淪為俘虜。祁弘縱兵屠殺,2萬多百姓被殺害。司馬颙逃到了山中,以野果為食。祁弘挾持晉惠帝還都洛陽,司馬颙趁機奪回了長安。
東海王攜大軍進駐成都,成為朝廷新的代言人。他一方面下令繼續攻打司馬颙,一方面下令抓捕司馬穎。不久司馬穎被抓,被毒死在獄中。
公元307年1月,東海王司馬越終于厭倦了癡呆皇帝司馬衷,派人毒死了他,立豫章王司馬熾為帝,是為晉懷帝。司馬越又假借新皇帝司馬熾的名義,下詔封司馬颙為司徒,并入朝輔政。司馬颙竟然不疑有他,領著三個兒子就前往洛陽。在路過新安時,被司馬越派人殺害。
自此,八王之亂算是落下了帷幕,在這場前后十六年的混戰中,死了一個皇帝、兩個皇后、十多位親王、兩家外戚,而在戰亂被殺害的百姓更是不計其數,西晉也就此走向了滅亡。
值得一說的是,作為最后勝利者的司馬越卻也沒落得什么好下場。司馬越立了晉懷帝之后,殺害了曾經被立為太子的清河王司馬覃,大肆殺害朝中大臣和政敵,一時間烽火四起,司馬越不得不帶兵四處滅火。
公元311年,晉懷帝傳檄天下,發布司馬越的罪狀,任命茍晞為大將軍,要求天下勤王,討伐司馬越。在征討石勒途中的司馬越得到消息后,急火攻心,暴死于項城。襄陽王司馬范(帝司馬炎之孫)和太尉王衍計劃秘不發喪,悄悄回軍東海。石勒得到消息后,率兵追趕,司馬越大軍隊群龍無首,被石勒大肆屠殺,十余萬人被殺,剩余被俘的近二十萬人則被劉淵手下的王璋大火燒死,并充作軍糧。司馬越的棺槨也被焚燒。留守洛陽的何倫等得到消息后,帶著司馬越的家眷、軍隊和城中百姓一起逃亡。結果路上又為石勒所敗,宗族中四十八個親王都被殺死。司馬越的王妃則被亂兵擄去,被侮辱后販賣為奴。至此,八王之亂算是徹底畫上了句號。
最后再提一句關于西晉的最后結局。公元311年七月,洛陽失守,晉懷帝被俘,公元313年晉懷帝在平陽遇害;公元316年長安失守,晉愍帝司馬鄴投降,西晉滅亡,公元318年2月被司馬鄴殺害于平陽。