太元二十一年(公元396年),東晉宮廷發生政變,孝武帝被殺,太子司馬德宗繼位,是為安帝。皇帝暴死,在其時是一件大事,但司馬道子要的隻是權勢,對此事根本不加過問,而借安帝登基之機搶到了攝政的高位。
安帝是個啞巴,是一個連冷熱都分不清的白癡,司馬道子自然可以為所欲為了。司馬道子的心腹王國寶、王緒兄弟也得到了高官厚祿,作威作福,貪汙受賄,難以計數。他們又說動司馬道子裁撤王恭和殷仲堪的兵權。孝武帝在位之時,因為要防範司馬道子權勢過盛,任命皇後兄王恭為平北將軍,鎮京口(今江蘇鎮江市),控製北府兵;以振威將軍殷仲堪為荊州刺史,都督荊益寧三州軍事,分了司馬道子的兵權。又引王恂為尚書仆射,王雅為太子太傅,分了道子的行政權和決策權。當時司馬道子對孝武帝寸土不讓,以王國寶為中書令兼中領軍(中央禁軍將領),參與機要和執掌武官銓選,又引王緒為心腹,深相結納坐鎮曆陽的庾楷,引為外援,以此來對抗孝武帝。這樣,司馬道子與王恭分別形成兩大集團,互相攻訐。這時要裁撤王恭和殷仲堪的兵權,自然會引起他們的反對,無異於引火燒身。王恭早就心懷不滿,此時正好找到借口,遣使遊說殷仲堪,以討王國寶為名,聯合興兵。隆安六年(公元397年)四月,王恭首先發難。司馬道子聽說兩鎮聯兵,六神無主,隻好殺了王國寶和王緒二人,求王恭退兵。兩人一死,王恭已無借口,隻好暫時作罷。
王國寶死後,司馬道子舉薦譙王司馬尚之和司馬休之兄弟為心腹,密商對策。司馬尚之勸說司馬道子說:“地方勢力強盛,宰相的勢力就會減小,應當暗中樹立羽翼,以便來保護自己。”司馬道子深以為然。於是,在司馬尚之的建議下,司馬道子以王恂為江州刺史以防備王恭,並且割庾楷管轄的四郡歸王恂節製。這一來引起了麻煩。庾楷本來結黨於司馬道子,是道子強有力的外援,萬萬沒想到道子竟會拿他開刀,一怒之下,派遣兒子去遊說王恭再次起兵。上次王恭沒有敢大動幹戈,原因之一就是擔心庾楷兵馬太盛,威脅到其側背,現在庾楷自己送上門來,自然求之不得,立刻知會殷仲堪與桓玄,自為盟主,約期在隆安二年再次進兵,會攻建康。
司馬元顯時年16歲,正是意氣風發的時候。他自告奮勇,要求討伐王恭。他慷慨地對父親說:“去年不討伐王恭,才有現在的事。如今若是再滿足他的胃口,宰相的災難就不太遠了。”他自薦為征討都督。司馬道子日夜飲酒,見兒子主動請纓,就把軍權交給了元顯。司馬元顯雖然年少,但卻聰明多智,果敢敏銳。他命令衛將軍王恂、右將軍謝琰對付王恭,司馬尚之對付庾楷,企圖利用謝琰與北府兵的關係,瓦解北府兵的戰鬥力。
王恭桀驁不馴,手握北府勁旅。可是他既不知兵,又不會用人,軍權全交給大將劉牢之等人,而且平時又不恤士卒,因此劉牢之等人對他早已恨之入骨。司馬元顯抓住了這一點,派密使遊說劉牢之,答應事成之後,把王恭的名號授給他。於是劉牢之陣前倒戈,殺死了王恭。
司馬尚之進軍也頗順利,打敗了庾楷,接任豫州刺史,但不久就被桓玄和楊期的部隊打敗。桓、楊的軍隊進圍建康,京城麵臨威脅。司馬元顯急命劉牢之人衛京師。劉牢之能征慣戰,在淝水之戰中享有很大的威名,桓玄由此而生怯心。司馬道子又采納了桓修的意見,發表桓玄為江州刺史,楊期為雍州刺史,而貶殷仲堪為廣州刺史,由桓修接任其職務,企圖以此收買桓、楊二人。此舉果然奏效,桓、楊二人拒絕殷仲堪的號令,準備和道子聯手。但殷仲堪也老謀深算,他一知道朝廷的任命,馬上退回尋陽(今江西九江),命令桓玄和楊佳期也回撤,如不聽命,他一回江陵,就將他們所統帥的士兵家屬全部殺掉。此計非常毒辣,桓、楊所部軍心不穩,再不回撤,軍隊就會嘩變,隻好服從殷仲堪的命令。此後,三人互換人質,共推桓玄為盟主,和朝廷討價還價。司馬道子和元顯也知道劉牢之絕不會為他們賣命,就趁此收回成命,一場禍亂暫告平穩。