公元290年(太熙元年),晋武帝司马炎驾崩后,外戚杨骏为太傅、大都督,掌管朝政。即位的晋惠帝司马衷痴呆低能,皇后贾南风(即贾后)为了让自己能掌握政权,于永平元年(291年)与楚王司马玮合谋,发兵杀杨骏,而政权却落在汝南王司马亮和元老卫瓘手中。贾后政治野心未能实现,当年六月,又使楚王司马玮杀汝南王司马亮与卫瓘,然后反诬楚王司马玮矫诏擅杀大臣,将司马玮处死。贾后遂执政,任用贾模、张华、裴頠等人,使天下保持相对安定。公元299年(元康九年),贾后不顾张华等人的劝阻,以阴谋废太子司马遹,次年杀之。统领禁军的赵王司马伦联合齐王司马冏发兵废杀贾后、张华等。之后司马伦掌控了大政。公元301年(永宁元年),司马伦废惠帝自立。司马伦篡位后,驻守许昌的司马冏起兵讨司马伦,镇邺的成都王司马颖与镇守关中的河间王司马颙举兵响应。洛阳城中的禁军将领王舆也起兵反伦,迎惠帝复位,赐死司马伦。司马冏以大司马入京辅政。公元302年(太安元年),司马颙又从关中起兵讨司马冏,洛阳城中的长沙王司马乂也举兵入宫杀司马冏,政权落入司马乂手。公元303年(太安二年),司马颙、司马颖合兵讨伐司马乂。司马颙命都督张方率精兵7万,自函谷关向洛阳推进;司马颖调动大军20余万,也渡河南向洛阳。二王的联军屡次为司马乂所败。次年正月,洛阳城里的司马越与部分禁军合谋,擒司马乂,将其交给张方,被张方烧死。司马颖入洛阳为丞相,但仍回根据地邺城,以皇太弟身份专政,政治中心一时移到邺城。司马越对司马颖的专政不满,率领禁军挟惠帝北上进攻邺城。荡阴(今河南汤阴)一战,被司马颖击败,惠帝被俘入邺,司马越逃往自己的封国东海(今山东郯城北)。与此同时,司马颙派张方率军占领洛阳,接着并州刺史司马腾(司马越弟)与幽州刺史王浚联兵攻破邺城,司马颖与惠帝投奔洛阳,转赴长安。公元305年(永兴二年),司马越又从山东起兵进攻关中,击败司马颙。公元306年(光熙元年),司马越迎惠帝回洛阳,司马颖、司马颙相继为其所杀,大权落入司马越手中,八王之乱到此终结。16年中,参战诸王多相继败亡,人民被杀害者众多,社会经济严重破坏,西晋的力量消耗殆尽,隐伏着的阶级矛盾、民族矛盾爆发,之后“五胡乱华”,西晋灭亡。