八王之乱是发生于中国西晋时期的一场皇族为争夺中央政权而引发的内乱。这次动乱共历时十六年,分为前后两个阶段:第一阶段从元康元年(291年)三月到六月,持续三个月;第二阶段,从元康九年(299年)到光熙元年(306年),历时七年。其核心人物有汝南王司马亮、楚王司马玮、赵王司马伦、齐王司马冏、长沙王司马乂、成都王司马颖、河间王司马颙、东海王司马越八王。西晋皇族中参与这场动乱的王不止八个,但八王为主要参与者,且《晋书》将八王汇为一列传,故史称这次动乱为“八王之乱”。 “八王之乱”是中国历史上最为严重的皇族内乱之一,当时社会经济遭到严重的破坏,导致了西晋亡国以及近三百年的动乱,使之后的中国进入五胡十六国时期。
司马颖在朝野向来有威望,而且军事实力强,入洛阳后被增封二十郡,拜丞相。河间王司马颙也官升太宰,东海王司马越为尚书令。司马颙上表认为司马颖应该成为皇位继承人,过后废除皇太子司马覃,以司马颖为皇太弟,丞相位置不变。
东海王司马越对成都王司马颖的专政非常不满,就云集10多万士兵带着晋惠帝进攻邺城讨伐司马颖。东安王司马繇劝司马颖投降。司马颖不听,派奋武将军石超率5万军队拒战,在荡阴击败司马越,并俘虏了晋惠帝。石超把晋惠帝送到邺城。司马颖改年号为建武,杀死司马繇。
司马越在兵败时先逃到下邳,当时的徐州都督、东平王司马楙不接纳他,司马越就逃回其封地东海(山东郯城北)。司马颖以同是宗室兄弟的名义,下令宽恕司马越,要招他回朝。司马越不应命。
司马越败后,其亲弟并州刺史东瀛公司马腾及王浚,杀死司马颖所置的幽州刺史和演。于是司马颖出兵讨伐司马腾。司马腾与王浚结合异族乌丸、羯朱等势力共同攻击司马颖。司马颖派遣新选的幽州刺史王斌及石超、李毅等人抵抗司马腾等人,被羯朱打败。
失败的消息传到邺城后,人心惶惶,官僚士兵相续逃跑。司马颖甚是恐慌,与几十个将军连同晋惠帝连夜逃到洛阳。羯朱的军队一路追赶司马颖等人到朝歌,不及而还。
洛阳由司马颙的部将张方控制,张方又挟持晋惠帝。司马颖到长安,司马颙废除司马颖的皇太弟之位,要司马颖离开回封地。司马颙自行选置百官,改秦州为定州。
司马颙又让晋惠帝下诏,要立远在东海的司马越为太傅,要司马越回朝与太宰司马颙共同辅政。但司马越不受。
永兴二年(305年),司马颙挟持晋惠帝,发诏要罢免司马越等人。司马越就打出“张方劫迁车驾,天下怨愤,欲奉迎大驾,还复旧都洛阳”的名义起兵。
司马越又派人游说司马颙,只要司马颙送帝还都,就与司马颙分陕而居。司马颙欲从之,但张方不同意。张方作出建议称其本身还拥有士兵十余万众,可以亲自送晋惠帝回洛阳宫中,以堵司马越之口。然后让司马颖回邺城掌权,司马颙可留守关中,而后张方出兵北伐博陵。这样一来,局势就比较稳定,天下再也没有帮助司马越者。司马颙不赞同张方的建议,命豫州刺史刘乔为镇东大将军,派遣司马颖率领楼褒、王阐等,据河桥以抗拒司马越。
司马越亲自率领3万士兵,西进到了萧县。刘乔派遣其儿子刘祐抗拒司马越,司马越军战败。这时范阳王司马虓派遣督护田徽以八百骑兵帮助司马越,在谯与刘祐相遇,一战之下,刘祐众溃,司马越进屯阳武。
消息传到长安,司马颙非常恐慌,于是命令张方的亲信将领郅辅夜里暗杀张方,然后派人把张方的头颅送到司马越军中,认为这可以平息祸乱。而后司马颙又后悔,怪罪郅辅杀张方,又杀了郅辅。然后派遣刁默守潼关。张方的死对司马颙更是不利,例如范阳王司马虓从官渡渡河,其司马刘琨把张方头颅给荥阳守将吕朗看,吕朗马上献出城池投降,又击破石超,攻占许昌,在萧县又大败刘乔,刘乔逃奔南阳。
司马越军中的鲜卑将领祁弘等后来攻破潼关进入关中,司马颙大为恐惧。又派遣马瞻、郭传等在霸水抗拒司马越军,马瞻军又战败,司马颙单骑出长安,逃到太白山。司马越军进入长安。鲜卑部队大掠长安,杀2万余人。
而在河桥的司马颖军方面,支持司马越的安北将军王浚派遣督护刘根,率领三百骑兵至河上。王阐出战,被刘根所杀。司马颖要固守,范阳王司马虓就派出鲜卑的骑兵与平昌公司马模等袭河桥,楼褒军西逃,追兵一直追到新安,沿途死亡惨重。
司马越军进入长安后,封梁柳为镇西将军,守关中。光熙元年(306年),司马越率领诸侯及鲜卑将领许扶历、驹次宿等军队护送晋惠帝回到洛阳。晋惠帝下诏升司马越为太傅录尚书,增封下邳、济阳二郡。范阳王司马虓也被封为司空。
晋惠帝又下令镇南将军刘弘、南中郎将刘陶搜捕司马颖。于是司马颖抛弃母亲及妻子,单独与两个儿子庐江王司马普及中都王司马廓逃到朝歌,途中集合了故将及士兵数百人,欲逃到邺城故将公师籓那里。到达顿丘县后,为太守冯嵩所抓获,并送到邺城交范阳王司马虓处置,司马虓只将司马颖父子囚禁,并不忍心将其加害。一个多月后,司空、范阳王司马虓暴毙。司马虓的长史刘舆想到司马颖在邺城素有威望,担忧留司马颖在邺将成为后患,就秘不发丧,且令人装扮台使,矫晋惠帝诏书赐司马颖死。司马颖被看守他的人田徽缢死,时年二十八。他的两位儿子也被杀。