刺史谢琰与镇北将军刘牢之前往镇压,孙恩在得八郡响应下原打算攻陷建康推翻东晋,知道刘牢之兵临钱塘江时就打算割据会稽,以钱塘江与东晋分庭抗礼;不久刘牢之渡江,孙恩被逼率其所虏略的二十多万民众撤回海岛。当时孙恩在逃走时故意沿途留下掳劫得来的财宝器物以及年轻男女,争取刘牢之追军争相抢夺的时间以便逃亡。
后凉的龙飞四年,中国东晋隆安三年,(公元399年),后凉王吕光患病,后因病逝沉重,于当年十二月(400年年初)册立太子吕绍为天王,自称太上皇帝。他自感“开基既难,守成不易”,临终之时交代吕绍以庶兄吕纂、吕弘分掌军政大权,并嘱咐他们要兄弟和睦以共同应对当时国家“外有强寇,人心未宁”的困难局势。随后,吕光病逝,终年六十三岁。
吕绍秘不发丧,因畏惧吕纂之势,欲让位于吕纂。但吕纂却联合吕弘发动政变,逼死吕绍,自立为大凉天王。他将吕光葬于高陵,上庙号太祖,追谥为懿武皇帝。
隆安四年(400年)五月,孙恩率部众攻浃口(今镇海口),入余姚,破上虞,抵山阴县北之邢浦,被谢琰参军刘宣之击退后不久再度进军邢浦,并逼近会稽,守城的谢琰出战但战死。孙恩及后转攻临海。谢琰战死令朝廷大惊,派了桓不才、孙无终和高雅之领兵镇压。十一月,孙恩在余姚大败高雅之,但刘牢之及后却击败孙恩,孙恩再度逃入海岛。
隆安五年(401年)二月,孙恩率众第三次登陆,又攻浃口,进攻句章,但不能攻下并受刘牢之进击,于是撤回海岛。三月,孙恩第四度登陆,转攻海盐,但白天攻城遭刘裕击退,夜间试图进攻又被刘裕设计击败,孙恩于是转攻吴国内史袁山松守的沪渎。五月孙恩攻沪渎并杀袁山松,又从海路进至京口(今镇江),图取东晋京师建康,刘裕追孙恩至丹徒,以少胜多,大量孙恩部众堕海或堕崖,令孙恩狼狈登船逃走。不过孙恩仍自恃人多,不久就重整兵力再进建康,司马元显率兵拒战亦屡战不利。孙恩渐渐逼近,不过此时朝廷已经陈兵待战,豫州刺史司马尚之亦入援建康,孙恩趁虚掩袭建康的图谋失败,于是至新洲后就撤退,北走郁州。孙恩在郁州曾击败来攻的高雅之并俘虏他,但及后刘裕来讨,多场战事后孙恩大败,实力锐减,于是沿海南逃。南逃期间刘裕仍然一直追击,于是在沪渎又大败孙恩,孙恩于是在浃口再逃入海中。
第二年,晋朝廷改年号元兴,元兴元年(402年),司马元显讨伐桓玄,司马道子获授侍中、太傅,并将骠骑将军府中幕僚都

