晋惠帝司马衷执政时期,国家已经出现了混乱,为了争夺皇位,司马氏的几位诸侯王你争我夺,晋惠帝也成了王侯们手中的筹码,最后还被诸侯王毒死。参与争夺中央政权的诸侯王其实不止八位,但其他人在这场混战中没有八王影响大,因此才把这场混战称为八王之乱。这八位诸侯王分别是汝南王司马亮、楚王司马玮、赵王司马伦、齐王司马冏、河间王司马颙、成都王司马颖、长沙王司马乂、东海王司马越。
晋武帝在登基后,为了防止国家以后被外姓人抢走,在司马家族里封了很多诸侯王,不但给他们管理地方的权力,还准许他们拥有地方兵权,能各自调动军队。这样一来,国家全部掌握在司马氏手中,可是晋武帝没有想到,这么做虽然避免了外姓人掌控朝政,可自己的后代也将生活在危险之中,同族人篡权的机会大大增加了。
晋武帝临终前下诏书委托汝南王司马亮和皇后的父亲杨骏共同辅佐晋惠帝,可是杨骏想一个人掌权,于是请求晋武帝修改诏书,把司马亮的名字从辅政大臣里划掉。晋武帝当时已经奄奄一息,只好顺从了杨骏的意思,找来官员重新写一份诏书。
没多久,晋武帝驾崩了,杨骏开始辅政。司马亮知道杨骏不会放过自己,索性逃到许昌躲了起来。杨骏以为这下再没人能威胁到自己的地位,心里不禁十分得意,然而没过几天,他就发现事情并没有那么简单。
晋惠帝的皇后贾南风矮小黑丑,性格暴虐野蛮,她看到朝廷大权全部被杨骏握在手里,心里很不满。自从司马衷成为了晋惠帝,贾南风每天都想着如何利用惠帝操控朝政,既然有这种想法,当然不愿看到杨骏的嚣张模样了。贾南风知道不能明着和杨骏对抗,想来想去,她决定拉拢汝南王司马亮和楚王司马玮。贾南风让司马玮把荆州的兵力全部调集到洛阳,暗中把守住重要的出城路口。杨骏听到司马玮调兵的消息,心里虽然害怕,但不敢出面阻止。
公元291年,贾皇后借惠帝之名下诏废了杨骏的官职,声称他密谋造反,然后楚王司马玮带着大军驻守皇宫,并围堵杨府。杨骏及其家人全部被杀,还诛灭了杨家三族。杨骏死后,汝南王司马亮和大臣卫瓘成了新一任的辅政大臣,贾皇后对这个结果并不满意,因为权力没有全部掌握在她手中。楚王司马玮掌握了一部分京城禁军的兵权,司马亮和卫瓘担心司马玮也有篡权的想法,便计划着夺走他的兵权,并把司马玮遣返回了封国。
司马玮怀恨在心,他想报复司马亮和卫瓘,于是投靠了贾皇后。贾南风正愁找不到人来扩充自己的势力,她马上封司马玮为太子太傅,这样就可以继续留在洛阳,随后,贾皇后假借惠帝之名,下诏书宣布司马亮和卫瓘企图谋反,命令司马玮带兵包围了两人的家,司马亮和卫瓘都被士兵杀死。
贾皇后害怕司马玮知道太多内幕,总有一天会要挟自己,于是她在司马玮杀掉司马亮和卫瓘之后,又以惠帝的名义下了一道诏书,指责司马玮伪造汝南王和卫瓘的谋反事件,并伪造惠帝诏书,命令人把他们抓起来。司马玮没料到贾皇后会陷害自己,他知道难逃一死,所以没有逃跑,任由贾后的人把自己绑起来送进了监狱。没过几天,司马玮被问斩了,他的朋友歧盛曾在司马亮和卫瓘被杀后劝他扩大自己的势力,后来贾皇后知道了,歧盛也被处死。
从这之后,贾皇后的势力达到鼎盛,她的亲信遍布朝中各个官位。为了彻底控制朝政,贾皇后又开始陷害太子司马遹。因为司马遹不是贾皇后的亲生儿子,而是谢才人所生,贾南风害怕司马遹即位后会废掉自己的太后之位,便打算先一步废了司马遹的太子之位。当时的太子太傅是赵王司马伦,他和大臣孙秀得知了贾皇后的计谋,本想着制止太子被杀,可是孙秀想到太子即使得救了,继位之后也不一定会重用自己和司马伦,于是他劝司马伦放任贾皇后陷害太子司马遹。不但如此,司马伦和孙秀还怂恿贾南风尽快处决太子,以绝后患。没多久,太子司马遹在被软禁的金墉城中被杀害,消息传到洛阳后,司马伦和孙秀联合其他大臣,伪造了惠帝的诏书,下令抓捕贾皇后和她的亲信,随后,司马伦又假造诏书,任命自己为相国,孙秀等人也得到了不少封赏。
公元301年,司马伦废黜晋惠帝,自立为皇帝,然而他不善于管理国家,加上自身道德败坏,导致朝政动荡,官员尔虞我诈。河间王司马颙、成都王司马颖和齐王司马冏不服气被同是诸侯王出身的司马伦统治,决定联合起来发动叛乱。
三王带领各自的军队在洛阳城会合,与司马伦的军队交战两个多月,虽然死伤不少,但总算杀死了司马伦,还消灭了不少司马伦的党羽。随后,司马冏重新扶持晋惠帝司马衷登基,自己则担任大司马,册封司马颙和司马颙高官厚爵。好景不长,司马冏掌控政权后变得花天酒地,朝廷再次陷入混乱之中,给了其他诸侯王可乘之机。
河间王司马颙在禁军首领李含的怂恿下起兵攻打司马冏,企图篡权,还罗列了很多司马冏的罪证,以表现自己是替天行道。不仅如此,司马颙还谎称长沙王司马乂也是自己阵营中的一员,企图借司马冏之手除掉司马乂,然后自己专心对付司马冏。没想到司马乂把司马冏打得落花流水,出乎意料取得了胜利。司马颙傻了眼,眼看政权落入司马乂手中,司马颙气得火冒三丈,又不好发泄出来。
公元303年,司马颙联合成都王司马颖举兵二十七万进攻洛阳。晋惠帝任命司马乂为大都督,带兵迎战。双方交战好几个月,司马乂最终取得了胜利。可是东海王司马越趁司马乂带军在外的时候,偷偷地贿赂了几个禁军将领,把司马乂抓住送到金墉城软禁起来,晋惠帝便封司马越为尚书令。之后,司马越联合司马颙的部下张方,用火烧死了司马乂,斩杀了很多司马乂的部下。
在几位诸侯王的争权过程中,晋惠帝始终只是个政治工具,皇帝身份有名无实,司马颖逼迫他封自己为丞相,封司马颙为太宰,还下旨废黜了太子司马覃。司马颖认为自己大权在握,渐渐地也不把晋惠帝放在眼里,只顾自己吃喝玩乐。然而没过多久,东海王司马越就集结了十多万人马讨伐司马颖,经过一番混战,司马越被打败,逃到了下邳。司马颙得到消息后派兵前去增援司马颖,乘机攻入皇宫,控制了晋惠帝。
公元305年,司马越的弟弟司马腾为了给哥哥报仇,集结了军队,司马颖立刻派兵镇压,可是被司马腾打败,逃到了长安。司马颙则逼迫晋惠帝下令请司马越回朝一同辅政,被司马越拒绝了。其实司马越想一个人掌握政权,在他拒绝司马颙的邀请后没多久,就出兵攻打洛阳。一路上,司马越收服了很多地方官员,东平王司马楙也归附于他。司马颙在朝中得知司马越出兵的消息,慌忙逼迫晋惠帝下令罢免司马越的爵位,司马越干脆撕破脸皮,举起讨伐旗帜,大张旗鼓地朝洛阳进军。
经过一年的混战,司马越打败了司马颙,取得了争夺政权的胜利。随后,司马越毒死了晋惠帝,拥立司马炽为晋怀帝,完全掌控了朝政。
八王之乱给晋国政权带来了恶劣影响,中原势力一落千丈,外族频繁入侵,百姓生活在水深火热之中,安稳的日子被战乱打破。