王镇恶是前秦宰相王猛的孙子。前秦苻氏统治结束时,王镇恶投奔于东晋,朝廷任命他为临法令。王镇恶不擅长骑马、拉弓却善于谋略,喜欢探讨国家军事、政治,而且具有决断能力。
有人把王镇恶推荐给刘裕,刘裕和他交谈,很喜欢他,于是就留他住在自己家里。第二天早晨,对手下参谋说:“我听说名将家里出名将,看王猛的孙子王镇恶,确实是这样。”立即就任命王镇恶为中军参军。
荆州刺史刘毅自认为当年勤王讨伐桓玄的功劳和刘裕差不多,心里非常骄傲。等到做了地方之长,总觉得郁闷不得志。刘裕对他总是容让,更助长了刘毅的傲气。
晋义熙八年(公元412年)九月,刘毅抵达江陵,对地方上的官员做了很大调整。又擅自抽调豫州官员,以及江州兵力一万多人跟随自己。
正在这时,刘毅生了重病,就向朝廷要求调自己的堂弟兖州刺史刘藩来做自己的副手,刘裕当时是太尉,就假装答应了。刘藩入京朝见。
十二日,刘裕让皇帝下诏,列举刘毅罪状,说他与刘藩等人阴谋造反,已经抓住刘藩,命令他自杀了。
十五日,刘裕各路大军从建康出发,王镇恶请求给他一百条船,让他担任前锋。
二十九日,抵达姑孰,任命王镇恶为振武将军,与龙骧将军蒯恩带领一百条船作为前锋。
刘裕告诫他们说:“如果敌人可以战胜,就进攻他们。如果不能,就把他们的舰船烧毁,留在水边驻扎等我到来。”王镇恶日夜兼程,紧急行军。因为刘毅还不知道刘藩已死,就自称是刘藩来了。
十月二十二日,王镇恶抵达豫章口,离江陵城只有二十里。他们放弃舟船,上岸步行前进。蒯恩率领军队走在前面,王镇恶紧跟着他。
王镇恶在每条船上留了一两个人,在船舷上立起六七面军旗,旗下放置战鼓,然后交代留下的人:“估计我们快要到江陵城时,你们就拼命擂鼓,做出后面还有大部队的样子。”又另外派人去烧江津的舰船。
王镇恶径直前去突袭江陵城,告诉前面的军士:“如果有人问,就说刘藩到了。”守卫渡口的士兵和当地百姓听了都安下心来,一点也不怀疑。离城还有五、六里的时候,碰上刘毅手下大将朱显之准备去江津,问:“刘藩在哪里?”军士们说:“在后面。”
朱显之到了军队的后面也没有见到刘藩,却看见士兵们扛着挡箭板等攻城用具,又远远望见江津的舰船已经被火烧毁,江边擂鼓的声音又很大,明白过来,知道不是刘藩追来,就跳上马背,骑马回城向刘毅报告,一边跑一边下令守城士兵关闭各个城门。王镇恶也骑着马跟进,城门还来不及关闭,士兵因此得以进入江陵城。
王镇恶率领军队与城内的士兵展开激战,同时进攻江陵的牙城,从中午打到傍晚,城内的守军终于失败溃散。王镇恶让人在牙城的墙上挖了一个洞,从洞里攻了进去。于是派人把皇帝降罪的诏书和赦免他的文告,以及刘裕写的亲笔信交给刘毅。刘毅将它们全部烧掉,看也不看,与司马毛修之等人督促士兵奋力死战。
城里的人还不相信刘裕亲自到来,但是军队里那些跟随刘毅从东方来的士兵,与朝廷军队中的一些士兵是表亲,他们一边打一边交谈,知道刘裕真的来了,人心因此离散害怕。到了夜里,刘毅官府前的卫兵全都逃散,并杀死了刘毅手下猛将赵蔡,只有刘毅身边的侍卫还关紧东西大门顽强抵抗。王镇恶担心黑暗里自己的士兵彼此误伤,于是把部下带出去围困牙城,并在南面放开一个口子。刘毅害怕南面有伏兵,半夜的时候,率领三百多个侍卫打开北门突围逃出。
刘毅连夜逃往牛牧寺。当初,桓蔚兵败的时候,就逃到这里,投奔牛牧寺的僧人昌。昌把桓蔚藏起来保护,刘毅把昌杀了。因此,寺里的僧人坚决拒绝,并说道:“以前,我们的师傅收留桓蔚,被刘毅杀了。现在,我们哪里再敢收留陌生人?否则,只会招来祸患。”刘毅仰天长叹道“咎由自取啊!”于是上吊而死。