八王之乱发生的重要原因是晋武帝司马炎在安排继任者人选上的重大失误。他在立皇太子和选太子妃问题上的重大失误,造成了贾南风得以干政弄权,直接导致了八王之乱的爆发。
中国古代专制主义中央集权统治运转,主要靠两个因素:第一,中央集权制度,特别是皇帝与宰相、地方长官、统兵大臣的关系。第二,拥有一个能够认真实行这一制度的统治集团,尤其重要的是,拥有一个有威望、有才干的皇帝。二者缺一不可。
西晋初年,上述两个因素基本具备。西晋刚刚统一全国,晋武帝本人有统治才干,威望也比较高,所以能把至高无上的权力牢牢握在自己的手中,保持住政局的稳定。同时,当时土广人稀,土地问题不严重;晋王朝颁布了占田法、户调式,罢免了州郡兵,赋税徭役也不十分沉重,所以整个社会生产是向前发展的。如果晋武帝死后继位的皇帝不十分愚蠢,是个中人之才,或者接受顾命的辅政大臣具有相当的威望与才干,能够基本上控制政局,八王之乱就没有可发生的合适环境。然而继位皇帝和接受顾命的辅政大臣的情况远非如此。
晋武帝的继任者是晋惠帝司马衷。他是晋武帝杨皇后所生,上面有个同母哥哥司马轨早死,下面诸弟又都太小,所以泰始三年(267年)正月丁卯日,被立为皇太子,时年九岁,是合法的皇位继承人。然其性鲁钝,世言更谓其为白痴。不少大臣从晋王朝和封建地主阶级的利益出发而主张废掉他,比较突出的是卫瓘与和峤。晋武帝对太子本亦有所忧虑,然其恐身后皇位落于他系,加上司马衷之子司马遹幼而聪敏,似有人君之资,武帝甚爱之。他为使爱孙日后得承帝位,乃不易储。然守器非才,皇权旁落,乱源已成。
关于导致八王之乱的原因,历史学界尚有争议。
王仲荦认为:八王之乱是由于“使诸王出专方面重镇所致”,“如武帝末年,用秦王柬都督关中,楚王玮都督荆州,淮南王允都督江、扬二州,汝南王亮出镇许昌。惠帝即位,用梁王肜、赵王伦、河间王颙先后镇关中,成都王颖镇邺。赵王伦擅政,用齐王冏镇许昌。……一切割据称雄与举兵向阙的事情,也均由此而起”。
何兹全认为:晋因惩魏氏孤立之敝而建立的宗室诸侯的特权,由于缺乏必要的法度和统治集团内部矛盾的发展,宗室诸侯王恰好成为分割皇权的势力,以致出来了八王之乱。可以这样说,士族门阀势力的恶性发展,为八王之乱的发生提供了政治基础;分封食邑制度,使宗王有了发展自己经济力量和集聚军事力量的根据地;宗王出镇使宗王都督掌握了相当大的军权,是他们敢于发动变乱的军事基础;晋武帝选嗣不当,给叛乱者提供了有利的时机。
而引发八王之乱的直接因素则是贾后专政。晋惠帝的皇后贾南风,是开国元老贾充之女,大司马衷两岁,貌丑而凶狠,怀有政治野心,并且手段毒辣。晋武帝时,外戚贾氏和杨氏都有重要的政治地位。晋武帝死后,晋惠帝无能力治理朝政,以致后来引起宗室、外戚争权夺利,贾南风得以专权。而贾南风推行的女性专制主义统治政策则成为八王之乱的直接导火索。