三國末期曹魏的大將軍、太尉、太傅司馬懿與二子司馬師、司馬昭都是權傾一時的權臣。司馬炎於265年取代曹魏政權而建立新政權,建國號為晉。西晉(266年—316年)是中國歷史上三國時期之後的大一統王朝之一,另與東晉合稱晉朝,傳四帝。
太熙元年(290年)晉武帝去世,晉惠帝(司馬衷字正度,晉武帝司馬炎次子,母武元皇后楊艷,西晉第二位皇帝,在位17年)繼位,外戚楊駿輔政,統治集團內部矛盾愈演愈烈,終於爆發了「八王之亂」。
永寧元年(301年),趙王司馬倫(柏夫人之子)自立為帝,改元建始,晉惠帝退位。同年三月,齊王司馬冏、河間王司馬顒、成都王司馬穎三王聯合常山王司馬乂(後封長沙王)伐趙王司馬倫。五月去除趙王司馬倫及其黨羽,晉惠帝復位,齊王司馬冏專政。
太安元年(302年)成都王司馬穎及河間王司馬顒派軍討伐齊王司馬冏,長沙王司馬乂於京城洛陽響應。最後齊王司馬冏及其黨羽被除,長沙王司馬乂掌政,成都王司馬穎於鄴遙控。
太安二年(303年)成都王司馬穎為了去除駐守京城的長沙王司馬乂,聯合河間王司馬顒率軍攻擊洛陽,但被長沙王屢屢擊敗。
永興元年(304年)初洛陽城缺糧,東海王司馬越勾結禁軍擒長沙王,開城投降。長沙王被河間王將領張方用火烤死,成都王穎迫惠帝立其為皇太弟,河間王顒為太宰,東海王越為尚書令。成都王勝利後,班師返鄴,政治中心北移。而後東海王越集結各方兵力,挾惠帝討伐成都王穎。最後失敗,惠帝被俘,東海王逃至其封國東海(今山東郯城北),河間王將領張方佔領洛陽。
但不久東海王的親弟并州刺史東瀛公司馬騰及幽州刺史王浚聯合異族烏丸、羯朱等勢力擊敗成都王。成都王挾晉惠帝逃至洛陽,投靠擁有關中及洛陽的河間王,最後成都王被廢,河間王改立司馬熾為皇太弟。
永興二年(305年)東海王司馬越在山東再次起兵,西向進攻關中。
光熙元年(306年)東海王司馬越攻入洛陽。河間王司馬顒和成都王司馬穎敗走,最後相繼被殺。東海王司馬越迎金惠帝還洛陽,隨後晉惠帝被毒死,豫章王司馬熾繼位,是為晉懷帝,由東海王司馬越專政。八王之亂至此結束。
八王之亂中,參戰諸王多相繼敗亡,人民被殺害者眾多,社會經濟嚴重破壞,西晉統治集團的力量消耗殆盡,隱伏著的階級矛盾、民族矛盾便迅速爆發。