东海王司马越乘机发动政变,带着皇帝司马衷御驾亲征,讨伐司马颖。司马颖发兵迎战,在荡阴(今河南汤阴)将中央军击败。司马越只身逃回其封地东海(今山东郯城北),司马衷被俘虏到邺城。
司马颖贸然俘虏了皇帝,铸下大错。蓟城(北京)镇守王浚、并州刺史东瀛公司马腾(司马颖亲弟弟)共同起兵,南下勤王,结合异族乌丸、羯朱等势力共同攻击司马颖。司马颖战败,与几十个将军连同晋惠帝连夜逃到洛阳。远在长安的司马颙趁火打劫,命其在洛阳的部将张方挟持晋惠帝、司马颖等人强行迁都到长安。司马颙既已掌握了白痴皇帝,司马颖就没有利用价值了,他的皇太弟的头衔被撤销,司马颖被迫回到自己的封地,司马颙总揽大权,当了宰相。
战败逃走的东海王司马越,再次集结大军,打出迎接皇帝司马衷的旗号,讨伐司马颙。司马颙应战,大败。305年,司马越接晋惠帝回洛阳。成都王司马颖趁机向北逃亡,为人所杀。