多,賈后得罪不少王公貴族而不覺得。王公貴族已經無法給下面的一層層直到最底層的百姓那裡交待,一直充當賈后心腹的趙王司馬倫認為可以除掉賈后自己來掌權了。趙王學賈后找到司馬衷,再次發動矯詔政變,趙王殺賈后成功了,可是他引發了八王之亂。因為晉惠帝司馬衷的兒子從太子開始到?的兒子,都在賈后與趙王手裡開始陸續被殺。這一殺司馬衷的兒子,皇位的繼承人沒有了,這就有了幾個司馬衷弟弟來相繼爭奪權力。
先是司馬倫頭昏,他301年搞篡位,殺了賈后又殺新立的太子,學賈后殺自己的親侄子,同年3月,齊王得到成都王、河間王與常山王等王爺的支援,殺稱帝的趙王。晉惠帝重新回到皇位,兒子已經給殺光了,只好立了皇孫。302年,又立了一個新太子??第三個,302年12月,改封為長沙王的常山王殺齊王,到了303年8月中,成都王與河間王殺長沙王,八王最後一個王東海王開始捲入,304年晉惠帝想發動政變殺成都王與河間王,先是未遂,隨後在同年6月趕走成都王,7月中晉惠帝在東海王等人的支援下親自討伐成都王,在鄴城附近一個叫做蕩陰的地方大敗被俘,但成都王隨後敗給東海王派出的將軍王浚,被擄走一路落難。這期間河間王來爭奪皇帝,11月的時候晉惠帝給河間王手下張方劫持到長安,張方還讓手下士兵洗劫了洛陽。
305年,數個王爺與將軍混戰,蕩陰之戰,幽州刺史王浚雖然打勝成都王,但是東海王自己的人馬敗給了成都王,狼狽逃回封國東海國,從兗州一直逃到徐州的下邳郡。東海王在徐州捲土重來,從兗州殺回京師,惠帝從長安奪回來了,成都王與河間王相繼被殺。306年,惠帝司馬衷暴死,
王衍透過二女兒親家的關係,拉上了東海王王妃這裡,從而與司馬越又建立了關係。兩人心照不宣,在賈后矯詔殺楊駿的十幾年前,東海王與琅琊王家就都是支援賈后的一派的,賈后在數年前死去,王戎也死了,王衍就與司馬越結成君臣一體,就差讓司馬越成為皇帝了。
八王只有他一個了,司馬越與弟弟們商量的結果,益州已經沒有了,劉淵謀反又使得幷州冀州各州大亂,還是不要自己稱帝為好,晉惠帝已經沒有兒子孫子可以繼承了,便找到沒有權勢的司馬衷生前的弟弟來立了做新皇帝,這就是晉懷帝。可憐他做了不一年,都被劉聰石勒的軍隊殺進洛陽俘虜。
劉淵304年起兵反晉,正式因為做幷州刺史的東海王弟弟司馬騰與幽州刺史安北將軍王浚與成都王的爭鬥,成都王招來劉淵等幷州移民匈奴五部,等於給西晉司馬皇族招來禍害。305年劉淵屢敗司馬騰,306年,司馬越讓司馬騰聯絡劉琨,司馬騰自己招募了一支乞活軍。司馬越打贏了家族之戰,但是他已經打不贏與劉淵的戰鬥,屢次也惡戰不能解決掉劉淵。
東海王給自己安排再次退往徐州的路子,一面同意王衍的建議準備經營江南,隨後派出了他兩個兒子與琅琊王司馬睿,隨行的還有不少琅琊王家弟子。東海王給自己的出路是先回到徐州,那裡畢竟是他的封國,他認為那裡比江南還安全,於是已經打算讓手下主力放棄洛陽,並且放棄晉懷帝不顧,那就是自己扔下朝廷逃命去了。王衍是打算一起帶走的,可是王衍來不及逃走就給劉淵石勒的軍隊阻斷了。王衍沒有跟著晉懷帝一起陷落在洛陽,王衍在半路被俘當即被殺。
司馬越一路上,見到王衍沒有跟上來,心裡越想越不對,覺得這是王衍打算撇下他東海王而去荊州江陵安頓,王衍不在身邊做人質,光是王澄那兒子在身邊頂個屁用啊,司馬越越想越不對勁。軍情很緊急,前方沒有可以阻擋劉淵軍隊騎兵的隊伍了,司馬越一聽說弟弟們都已經失去聯絡,心裡大起哀傷,結果死在半路上。王妃與大兒子等尚在,他們的大隊人馬,足足有十多萬軍民,抬著東海王的靈柩一路行進,結果被石勒的軍隊大包圍,全體被俘或者被殺。
司馬越是以討賊的名義出逃洛陽的,他不可能搞得太公開,中原司州雍州兗州豫州荊州各地還有大量晉軍,他們正在考慮要不要前來洛陽集中,司馬越也是用新皇帝晉懷帝的名義發出了號召令的。司馬越沒有想到的是劉淵進攻那麼厲害,而他更加沒有想到石勒這個人物會忽然變得強大起來。石勒已經殺死他弟弟東燕王司馬騰。石勒是打著給成都王的名義在兗州小村莊上起兵的,算是給八王之一的成都王報仇了。石勒遠端偷襲司馬越大隊軍民得手以後,繼續狂妄地南下,被司馬睿暫時打敗以後這才回頭,回頭去冀州打理一個老窩,這才收拾了曾經給司馬越和司馬騰打敗過他的幽州刺史王浚並