公元290年惠帝即位后,太后的父亲杨骏独揽朝政大权,施展权术,排除异己。公元291年,皇后贾南风不甘心让杨骏独掌大权,就密召宗室诸王进京铲除杨 骏。其实诸王早有野心,楚王司马玮一接到诏书,立即进京与贾后以惠帝名义下诏,以谋反罪,将杨骏灭族,并将其余党也都杀了。贾皇后除掉杨家势力后,又召汝 南王司马亮入朝辅政。司马亮也想独揽大权,暗中谋划夺取楚王玮的兵权。贾皇后想除掉诸王,先让惠帝诏令司马玮杀了司马亮,又以擅杀朝廷重臣的罪名将司马玮 处死。几经运筹,贾后终于夺得了西晋的全部大权。
贾后无子,就把妹夫韩寿的儿子抱来冒充自己的儿子。公元300年,贾后就决定废掉太 子,并且派人把他毒死,立抱来的孩子做太子。宗室得知后群情激奋,联合起兵,以贾后篡夺司马氏天下为名,讨伐贾后。赵王司马伦领兵入宫,派齐王司马废掉 贾皇后,并将其毒死,接着,废掉晋惠帝,自己称帝。
赵王司马伦当了皇帝后,齐王司马联合成都王司马颖、河间王司马起兵攻杀了司马 伦。齐王司马进入洛阳后,独揽大权,沉湎酒色。公元302年,长沙王司马与司马颖、司马互相声援,起兵发难。司马与司马打了几年,兵败被杀。司 马乘机入朝辅政,控制了朝政大权。公元303年,司马见司马又独揽了朝政大权,恼羞成怒,随即发大兵讨伐司马,与司马颖联合,大举进攻洛阳。公元 304年,正当他们打得昏天暗地的时候,在洛阳城里的东海王司马越乘机偷袭了司马,并把他烧死了。司马颖也就乘机进入洛阳,做了丞相,控制了政权。
东海王司马越认为自己杀司马有功,就以惠帝名义起兵讨伐司马颖。司马颖挟持着惠帝,到了长安。长安是河间王司马的势力范围,他见司马颖兵败势孤,就乘机把惠帝控制到自己手里,独揽了朝政大权。
东海王司马越和王浚联合打败了司马,进入长安。306年,司马越又把惠帝和司马颖、司马全都带回到洛阳,全都处死,立司马炽做皇帝,即晋怀帝。次年 (公元307年)改元永嘉。至此,围绕皇位争夺,长达16年之久的“八王之乱”总算结束。在这次血腥混战中,8个王死了7个,从此西晋王朝一蹶不振。