当月,刘裕率诸军自建康出发,王镇恶请战说:“公若有事西楚,请赐给百舸为前驱。”
刘裕率大军于二十九日至姑孰,任命王镇恶为振武将军,与龙骧将军蒯恩率百条小船作先头部队。在出发前,刘裕告诫王镇恶说:“你带领军队到达,自己筹划,如果敌人实力弱小,就把他们的战船烧了,然后在船上待命,等候我到来。要爱护百姓,宣扬国家的命令,‘罪止一人,其余一无所问。’”
王镇恶领命,昼夜兼程,沿途散布消息,说是刘太尉亲自率兵西上,以吸引刘毅的注意。十月二十二日,王镇恶率军抵达豫章口(今湖北江陵东南),距江陵城二十里,弃船步行进军。蒯恩率军在前,王镇恶紧随其后。
在离开前,王镇恶派遣一队人马突袭了江津(今湖北沙市东南),夺取刘毅的船舰,断其退路。在每艘船上留一两个人看守,在岸上竖六七面旗,下面放一只大鼓,告诉留下来的人说:“你们计算我将要到达城门,就要擂响战鼓,挥动旗帜,让别人以为这是一支人数众多的大军。”
王镇恶率军直指江陵城,对前军说:“假如有人询问,就说是刘太尉亲自率军前来。”沿途津戍及百姓说刘裕来了,人心震动。
离城不到五六里时,刘毅的大将朱显之带著十几个骑兵和几十个步兵,要出江津,正好碰上这一支军队。朱显之问他们是什么人,士兵回答:“刘太尉率军前来。”
朱显之驰马到近前,问刘太尉在哪儿,士兵回答:“在后”。
正在此时,朱显之听见战鼓声,望见江津的船舰被烧,烟火冲天。知道坏事了,跃马急驰而回,对刘毅说:“外有大军,好像是从水路而来,已经临近城门,江津船悉被火烧矣。”
刘毅大惊失色,于是急令关闭各城门。但已经晚了,王镇恶率军突进江陵城。王镇恶一边放火,一边扬言刘太尉已到,冲杀在前,身中五箭,手中所执的槊也被射中,长矛折断,拔出短刀砍杀,犹自奋战不休。
江陵是刘毅的老巢,军马众多,实力强劲,当然不能坐以待毙,从上午战至日薄西山,战斗仍然在惨烈的进行之中。
王镇恶派遣人送诏书及赦文与刘毅,让他举手投降。刘毅焚而不视,与司马毛惰之等人督士卒力战。
刘毅一步不让,每前进一步都有尸体倒下。王镇恶看到这样下去损耗太大,于是让士兵大声呼喊,刘太尉到了,投降免死。刘毅的士兵都得知刘是刘裕亲自率兵而来,战无斗志,溃散逃走,但刘毅的嫡系士兵仍关闭东西门抵抗。
王镇恶恐其作困兽斗,增加士兵伤亡,于是率军出围金城,故意打开南门,让刘毅逃跑。刘毅恐有埋伏,打算于三更时乘夜率三百余人由北门突围。由于事出突然,当王镇恶率军攻城时,刘毅的马还在城外放牧,仓促之间寻不着马,刘毅就管儿子刘肃民要马。
危急关头,没有战马就意味着没命,刘肃民说什么也不给。朱显之非常生气,对他说:“别人要你爹的脑袋,而你竟然珍惜一匹马!你就是今天能逃了,以后谁还能收留你?”
刘肃民无言以对,朱显之劈手夺过马缰绳交给了刘毅。刘毅骑上马就跑,在北门遭到了阻击,绕城一周,才得以从大城东门逃出。
手下的小弟逃散了,刘毅无路可逃,投奔到牛牧佛寺,打算做一个和尚了此残生。
在桓玄反叛时,桓玄手下的桓蔚战败,也投奔到牛牧佛寺。救人一命胜造七级浮屠,寺僧昌师父将桓蔚藏起来,刘毅亲自带兵寻找,将昌和尚杀死。及至今日,刘毅也阴差阳错的逃到此地,寺僧一眼就认出了刘毅,故意说道:“过去,我们的师父因为收留了桓蔚,为刘毅将军所杀,现在我们不敢收留来路不明的人。”
刘毅慨叹道:“为法自弊,一至于此。”于是在佛寺前自缢而死。第二天,百姓告诉王镇恶军。王镇恶派人前来,将其斩首,其子侄也全部被杀。
直到江陵平定后二十天,大部队才到达。刘裕随后来到江陵,诛杀了刘毅亲信郗僧施,消灭了刘毅势力。王镇恶因此战之功,于十一月被封为汉寿县子,食邑五百户。