太元二十一年(公元396年),东晋宫廷发生政变,孝武帝被杀,太子司马德宗继位,是为安帝。皇帝暴死,在其时是一件大事,但司马道子要的只是权势,对此事根本不加过问,而借安帝登基之机抢到了摄政的高位。
安帝是个哑巴,是一个连冷热都分不清的白痴,司马道子自然可以为所欲为了。司马道子的心腹王国宝、王绪兄弟也得到了高官厚禄,作威作福,贪污受贿,难以计数。他们又说动司马道子裁撤王恭和殷仲堪的兵权。孝武帝在位之时,因为要防范司马道子权势过盛,任命皇后兄王恭为平北将军,镇京口(今江苏镇江市),控制北府兵;以振威将军殷仲堪为荆州刺史,都督荆益宁三州军事,分了司马道子的兵权。又引王恂为尚书仆射,王雅为太子太傅,分了道子的行政权和决策权。当时司马道子对孝武帝寸土不让,以王国宝为中书令兼中领军(中央禁军将领),参与机要和执掌武官铨选,又引王绪为心腹,深相结纳坐镇历阳的庾楷,引为外援,以此来对抗孝武帝。这样,司马道子与王恭分别形成两大集团,互相攻讦。这时要裁撤王恭和殷仲堪的兵权,自然会引起他们的反对,无异于引火烧身。王恭早就心怀不满,此时正好找到借口,遣使游说殷仲堪,以讨王国宝为名,联合兴兵。隆安六年(公元397年)四月,王恭首先发难。司马道子听说两镇联兵,六神无主,只好杀了王国宝和王绪二人,求王恭退兵。两人一死,王恭已无借口,只好暂时作罢。
王国宝死后,司马道子举荐谯王司马尚之和司马休之兄弟为心腹,密商对策。司马尚之劝说司马道子说:“地方势力强盛,宰相的势力就会减小,应当暗中树立羽翼,以便来保护自己。”司马道子深以为然。于是,在司马尚之的建议下,司马道子以王恂为江州刺史以防备王恭,并且割庾楷管辖的四郡归王恂节制。这一来引起了麻烦。庾楷本来结党于司马道子,是道子强有力的外援,万万没想到道子竟会拿他开刀,一怒之下,派遣儿子去游说王恭再次起兵。上次王恭没有敢大动干戈,原因之一就是担心庾楷兵马太盛,威胁到其侧背,现在庾楷自己送上门来,自然求之不得,立刻知会殷仲堪与桓玄,自为盟主,约期在隆安二年再次进兵,会攻建康。
司马元显时年16岁,正是意气风发的时候。他自告奋勇,要求讨伐王恭。他慷慨地对父亲说:“去年不讨伐王恭,才有现在的事。如今若是再满足他的胃口,宰相的灾难就不太远了。”他自荐为征讨都督。司马道子日夜饮酒,见儿子主动请缨,就把军权交给了元显。司马元显虽然年少,但却聪明多智,果敢敏锐。他命令卫将军王恂、右将军谢琰对付王恭,司马尚之对付庾楷,企图利用谢琰与北府兵的关系,瓦解北府兵的战斗力。
王恭桀骜不驯,手握北府劲旅。可是他既不知兵,又不会用人,军权全交给大将刘牢之等人,而且平时又不恤士卒,因此刘牢之等人对他早已恨之入骨。司马元显抓住了这一点,派密使游说刘牢之,答应事成之后,把王恭的名号授给他。于是刘牢之阵前倒戈,杀死了王恭。
司马尚之进军也颇顺利,打败了庾楷,接任豫州刺史,但不久就被桓玄和杨期的部队打败。桓、杨的军队进围建康,京城面临威胁。司马元显急命刘牢之人卫京师。刘牢之能征惯战,在淝水之战中享有很大的威名,桓玄由此而生怯心。司马道子又采纳了桓修的意见,发表桓玄为江州刺史,杨期为雍州刺史,而贬殷仲堪为广州刺史,由桓修接任其职务,企图以此收买桓、杨二人。此举果然奏效,桓、杨二人拒绝殷仲堪的号令,准备和道子联手。但殷仲堪也老谋深算,他一知道朝廷的任命,马上退回寻阳(今江西九江),命令桓玄和杨佳期也回撤,如不听命,他一回江陵,就将他们所统帅的士兵家属全部杀掉。此计非常毒辣,桓、杨所部军心不稳,再不回撤,军队就会哗变,只好服从殷仲堪的命令。此后,三人互换人质,共推桓玄为盟主,和朝廷讨价还价。司马道子和元显也知道刘牢之绝不会为他们卖命,就趁此收回成命,一场祸乱暂告平稳。