主战之下决定将军事交由司马元显处理，并派兵抵抗，谢琰亦获假节、都督前锋军事，与王珣等领兵讨伐王恭。不久司马尚之大败给桓玄，谢琰驻屯宣阳门作守备。司马元显成功策反刘牢之并让他击败并俘获王恭后，在建康处死王恭；而桓玄等知道王恭死讯亦停止进攻。谢琰在不久迁徐州刺史。隆安三年（399年），在上一年逃入海中的叛民领袖孙恩卷土重来，更攻克会稽（今浙江绍兴），杀内史王凝之，吴国、临海及义兴三郡太守弃郡逃走，于是以上四郡及吴兴、永嘉、东阳及新安共八郡都有人起兵响应孙恩，又大杀官员。孙恩自号征东将军，徒众为「长生人」。因