第一次内战就在这年三月发生。镇东大将军司马冏首先在许昌发难,移檄各方镇州郡,一起讨伐司马伦。成都王司马颖立刻从邺城(今河北省临漳县)起兵响应,组成二十多万的大军,浩浩荡荡向洛阳进发。常山王司马乂、新野王司马歆也相继起兵。镇守关中的河间王司马颙本来依附司马伦,把司马冏派来的使者押送洛阳,又派兵援助司马伦。后听说司马冏、司马颖兵力强盛,他又转而反司马伦。三王联军与司马伦军激战六十余日,战死者近十万人,司马伦军终于败北。这时洛阳城内宿卫军又一次发动政变,斩杀司马伦、孙秀及其党羽,拥惠帝复位,迎三王入京。
齐、成都、河间三王以诛讨之功,瓜分了大司马、大将军和太尉的官职。大司马、大将军和太尉同为一品武官,难分高下,这说明三王彼此抗衡、三足鼎立的关系。但是,平衡是暂时的、相对的,平衡中潜伏着互相吞噬的企图。在一次谒陵时,司马歆向司马冏献策说:“成都王同皇上是兄弟至亲,如今共立功勋,理应留他一起辅政,否则必须剥夺他的兵权。”而在另一次谒陵时,司马乂则向司马颖献策说:“天下是先帝留下来的大业,大王有责任维护和匡正。”他们的弦外之音,已经充满杀气了。以当时的情势而论,司马颖尚不敌司马冏,因而他采纳左长史卢志的建议,归功于司马冏,自称母病,要求还邺,在拜辞惠帝之后,便跃马扬鞭出东门而去。
这时,惠帝的子孙俱已不存,司马颖身为帝弟,本有继位的可能。而司马冏欲久专大政,故意选择年方八岁的司马覃为太子。司马覃,惠帝弟司马遐之子。这件事给司马颖、司马冏的关系蒙上了浓郁的阴影。司马冏得志之后,耽于宴乐,极其骄奢。他大兴土木,为修筑私第拆毁了数以百计的私家房屋,府第的规格可与皇宫媲美,由此大失人心,授政敌以柄。主簿王豹提醒他说:“从元康(291~299年)以来,在位的宰相没有善始善终的,这是时势使然,并非他们都是坏人。现在河间王树立根本于关右,成都王盘桓枝叶于魏地,新野王有广大的封土分布在江汉。三王血气方刚,年轻力强,又都手握兵马,处要害之地。而明公建无上功业,挟震主权威,独据京都,专执大权,如此进则难以长久,退则道路维艰,想要相安无事,我以为都很困难啊!”于是,他建议以黄河为界,与司马颖分南北而治,夹辅天子。司马颖的党羽司马乂向司马冏挑唆说:“这小子离间我们骨肉至亲,该杀!”司马冏不分青红皂白,下令杀王豹。王豹临死,悲愤地说:“把我的头颅悬挂在大司马府的门上,让我看着兵众来进攻齐王吧!”
王豹诚然有眼力、有胆识,但假若其谋得用,其道得行,也未免太晚了。几乎在王豹被杀的同时,第二次争夺最高权力的内战又开始了。司马颙举兵传檄洛阳,宣布:“我勒兵十万,将要与成都王、新野王、范阳王共会洛阳。”司马颖接到檄文即发兵响应,司马乂也在洛阳城内动手,城内连战三天,大火冲天,飞矢如雨,死伤无数。司马冏终于大败被杀,同党受诛连而死者两千余人。
司马冏死后,司马乂辅政,虽然事无巨细都派使者到邺城请示司马颖,但司马颖的野心仍然得不到满足。司马颙居于西藩,更加愤愤不已。惠帝太安二年(303年)八月,第三次内战又起。司马颙借口司马乂专擅朝政,杀害忠良,与司马颖联兵讨伐。司马颙部将张方领精兵七万,司马颖部将陆机率大军二十余万进攻洛阳。司马颙军一度获胜,张方攻入洛阳,纵兵大掠,死者数以万计,无辜百姓受尽蹂躏。司马颖军队内部矛盾重重,陆机指挥不灵,大败于七里涧,死者填塞涧中,涧水为之断流。后来,由于洛阳内部发生政变,东海王司马越勾结宿卫军将领,拘禁司马乂,派人密告张方,张方劫而杀之。
第三次内战后,司马颖由丞相而皇太弟,成为名正言顺的继承人。但司马颖仍居住在邺城,御用车辆服物都从洛阳运去。司马颖亲信卢志担任中书监,也不离邺。中书监是当时专管诏命的中书省长官,可见洛阳朝廷是虚设,遮人耳目而已。不过为防止有人利用洛阳的傀儡皇帝生事,司马颖还是撤换了全部宿卫军。
权力的争夺越来越激烈,战争的周期也越来越短。司马颖执政才三个月,守尚书令司马越就迫不及待地发兵讨伐司马颖,这是第四次内战。司马越四方招兵,聚众十万,带着惠帝出征。但讨伐军在荡阴(今河南省汤阴县)一败涂地,司马越扔下惠帝,一溜烟地跑回东海国封地去了,傀儡皇帝落到司马颖手中。一波未平,一波又起。司马越弟、东赢公司马腾与幽州刺史王浚南下攻破邺城,所部鲜卑、乌桓兵入邺后大肆残杀士民,掠夺财物、妇女,使邺城遭受一次空前的浩劫。司马颖带着惠帝仓皇出逃,十分狼狈。惠帝无食,竟向黄门宦官借钱买食物,鞋子也跑丢了。
司马颖带着惠帝逃到洛阳,洛阳已被张方占领了。司马颖名为皇太弟,实际上寄人篱下,惶惶然若丧家之犬。张方在洗劫洛阳后,胁迫惠帝迁都长安。他们满载宝物、宫人西还,魏晋以来近一个世纪时间积累下来的财富扫地以尽了。张方原想放一把火,将宫殿、太庙都烧光,卢志劝说:“董卓无道,焚烧洛阳城,至今百年了还遭人唾骂,为什么要走他的老路呢!”张方这才作罢。
永兴元年(304年)底,司马颙废司马颖皇太弟,更立司马炽为皇太弟。当时,司马越虽败归封地,但他在宗室中颇有虚名,而且其弟并据重镇:司马腾据并州、司马略据青州、司马模据邺,足以与司马颙对抗。司马颙表示要和司马越和解,乃征司马越入朝为太傅,同辅帝室。又表司马略为镇南将军、领司隶校尉,镇洛阳;司马模为宁北将军、都督冀州,镇邺城。但司马越不肯讲和,挑起第五次内战。这年八月,司马越以“奉迎天子,还复旧都”为号召,与东平王司马楙、范阳王司马虓及王浚结盟,并被推为盟主。他自称秉承皇帝的意旨,任意选置州郡官吏,以司马虓领豫州刺史,迁原豫州刺史刘乔为冀州刺史。刘乔举兵抗拒,与司马越属下在河南混战一场。司马颙遣司马颖、石超等援救刘乔,并州刺史刘琨借王浚突骑援救司马越。其后,王浚又派部将祁弘率领鲜卑、乌桓突骑为司马越前驱。司马越军声势大振,连败刘乔与司马颙援军。张方屯军灞上,盘桓多时不敢东进。当刘乔兵败的消息传到长安,司马颙大惧,遂杀张方,送张方的首级向司马越请和,但再次遭到拒绝。永兴三年(306年)四月,祁弘大破司马颙军,长驱入关,司马颙单骑逃进荒山。祁弘众兵大掠长安,杀死两万余人,然后用一乘牛车把惠帝带回洛阳。这次战争以司马越的全胜而结束,司马颙、司马颖先后被处死。
至此,西晋八王之乱总算降下了帷幕。
如果从永平元年(291年)贾后杀杨骏算起,则八王之乱前后长达16年。其中,永康二年(301年)至光熙元年(306年),大规模的军阀混战就有5次。八王之乱的危害极大,我国北方地区广被战火,历史名城洛阳、长安夷为丘墟。广大农村生产凋敝,生灵涂炭,死者不可胜数。八王之乱还引起一系列的连锁反应,直接导致十六国的出现及270余年的南北分裂。所谓“五胡乱华”,其实真正乱华的首先不是“胡”,而是西晋的统治者!