司马道子此后忌惮王恭和殷仲堪以军事相逼,于是以司马尚之与司马休之有才略而引其为腹心,又听从司马尚之所说树立外藩,于是出司马王愉为江州刺史。不过,此举招来豫州刺史庾楷不满,因为司马道子割原本由他都督的豫州四郡交给了王愉都督。
庾楷上表抗议不果后就鼓动王恭讨伐司马尚之,王恭终在公元398年与庾楷及殷仲堪、桓玄举兵讨伐王愉及司马尚之兄弟。司马道子曾试图劝止庾楷,但遭庾楷拒绝。司马道子面对王恭诸军举兵,不知所措,会稽王世子司马元显则力主讨伐王恭,朝廷加司马道子黄钺,以司马元显为征讨都督,统王珣、谢琰等人抵抗。司马道子将军事都委托给司马元显,自己则终日饮酒。及后司马尚之大败给桓玄,进至石头城,司马道子守中堂以备桓玄进攻,但期间却发生小插曲,有一匹马在军中乱走,士兵扰乱不安,竟令不少士兵掉进长江江水中溺死。
司马元显及后成功策反王恭手下北府军将领刘牢之,王恭兵败被处死,但殷仲堪、杨佺期和桓玄等军仍在建康附近的蔡洲。左卫将军桓脩此时向司马道子进言,建议司马道子以利益诱使桓玄和杨佺期二人,令二人反抗殷仲堪。司马道子于是分别让桓玄任江州刺史及雍州刺史,并以桓修为荆州刺史,又贬殷仲堪为广州刺史。
不过,此举未能瓦解殷仲堪军团,反令三人移镇寻阳,联合抗拒朝命,对抗朝廷。最终司马道子唯有以朝廷之名下诏慰问殷仲堪等人请求和解,又让殷仲堪复任荆州刺史,危机才得以解决。
公元399年,司马元显因司马道子有疾兼每天酒醉,知朝望已失,于是暗示朝廷解授司徒及扬州刺史,更由司马元显自任扬州刺史。司马道子酒醒后才知道,虽然大怒,但不能做什么。后司马元显加录尚书事,当时人以司马道子为东录;司马元显为西录。不过司马道子仍然酗酒,大小政事都由司马元显掌握,故此当时司马元显的西府有很多人拜访,而东府则门可罗雀。
公元401年,叛民孙恩进攻三吴,并循海进攻京口,当时刘牢之在会稽未返,司马元显率兵抵抗但屡战不利。面对如此险境,司马道子别无他法,只有每天在蒋侯庙祷告。只因刘裕击溃孙恩,以及司马尚之和刘牢之及时回军才逼使孙恩北逃,京师得以解危。
公元402年,司马元显讨伐桓玄,司马道子获授侍中、太傅,并将骠骑将军府中幕僚都移到太傅府。不过桓玄顺江南下抵抗,击败了司马尚之,刘牢之又背叛了司马元显,令司马元显兵众溃败。司马元显随后问计于司马道子,但司马道子唯有对其哭泣。桓玄随后掌握朝政,杀司马元显及其党羽,又流放司马道子到安成郡。
至同年十二月庚申日,被守卫司马道子的御史杜竹林因桓玄的指示以毒酒杀死司马道子,享年三十九岁。晋安帝闻讯在西堂为其哭丧三日。
公元404年,桓玄因刘裕起兵而败死,时大将军司马遵总摄万机,追尊司马道子丞相,并派司马珣之到安成郡迎其灵柩。公元405年,谥司马道子为文孝王,让司马道子与会稽王妃合葬于王妃陵。