七月初六,朱元璋亲率水军20万,往救洪都。十六日进抵江西湖口。
首先派兵守住泾江口(今安徽宿松南),另派一军屯于南湖嘴(今江西湖口西北),切断陈友谅归路;又派兵扼守武阳渡(今江西南昌县东),以防陈军逃跑;朱元璋则亲率水师由松门(今江西都昌南)进入鄱阳湖,形成关门打狗之势。
陈友谅听说朱元璋大军来援,即撤洪都之围,东出鄱阳湖迎战,一场规模空前激烈异常的生死大决战,就此在鄱阳湖面展开。
二十日,两军在康郎山(今江西鄱阳湖内)湖面遭遇。时陈军巨舰联结布阵,展开数十里,“望之如山”,气势夺人,朱元璋针对其巨舰首尾连接,不利进退,将己方舰船分为20队,每队都配备大小火炮、火铳、火箭、火蒺藜、大小火枪、神机箭和弓弩,下令各队接近敌舰时,先发火器,次用弓弩,靠近敌舰时再用短兵器进行格斗。
次日,双方展开激战。朱军大将徐达身先士卒,率舰队勇猛冲击,击败陈军前锋,毙敌1500人,缴获巨舰一艘。
俞通海乘风发炮,焚毁陈军20余艘舰船,陈军被杀和淹死者甚众。
但朱军伤亡也不少,尤其是朱元璋座舰搁浅被围,险遭不测。
战斗呈胶着状态。从早晨至日暮,双方鸣金收兵,战斗告一段落,双方互有伤亡,不分胜负。
二十二日,朱元璋亲自率领水师出战。但陈舰巨大,朱军舰小不能仰攻,接连受挫。这时朱元璋及时采纳了部将郭兴建议,决定改用火攻破敌。
黄昏时分湖面上吹起东北风,朱元璋选择勇敢士兵驾驶7艘渔船,船上装满火药柴薪,迫近敌舰,顺风放火,风急火烈,迅速蔓延。
一时烈焰飞腾,湖水尽赤,转瞬之间烧毁陈军数百艘巨舰,陈军死伤过半,陈友谅的两个兄弟及大将陈普略均被烧死。
朱元璋挥军乘势发起猛攻,又毙敌2000余人。
二十三日,双方又有交锋,陈友谅瞅准朱元璋旗舰展开猛攻,朱元璋刚刚移往他舰,原舰便被陈军击碎。
二十四日,俞通海等人率领6舰突入陈军舰队,勇敢驰骋,势如游龙,如入无人之境。朱军士气大振,发起猛烈攻击。
最后,陈军不支败退,遗弃的旗鼓器仗,浮蔽湖面。陈友谅只得收拢残部,转为防御,不敢再战。当天晚上,朱元璋乘胜进扼左蠡(今江西都昌西北),控制江水上游,陈友谅亦退保诸矶(今江西星子南)。
两军相持3天,陈军屡战屡败,形势渐越不利。陈友谅两员大将见大势已去,于是投降了朱元璋,陈军内部军心动摇,力量更加削弱。
陈友谅又气又恼,下令把抓到的俘虏全部杀掉以泄愤。而朱元璋却反其道而行之,将俘虏全部送还,并悼死医伤,瓦解陈军士气,从而大得人心。
陈军内部分崩离析,士气更加低落。朱元璋判断陈军可能突围退入长江,乃移军湖口,在长江南北两岸设置木栅,置大舟火筏于江中,又派兵夺取蕲州、兴国,控制长江上游,堵敌归路,待机歼敌。
经过1个多月的对峙,陈友谅被困湖中,军粮殆尽,计穷力竭,于是孤注一掷,冒死突围。
八月二十六日,由南湖嘴突围,企图进入长江退回武昌。
行至江西湖口时,朱军以舟师、火筏四面猛攻,陈军无法前进,复走泾江,又遭傅友德伏兵阻击,左冲右突,打不开生路,陈友谅中箭而死,军队溃败,5万余人投降。
此次水战,从七月二十日开始到八月二十六日结束,前后历时37天,其时间之长、规模之大,投入兵力、舰只之多、战斗之激烈都是空前的。
决战以朱元璋的完全胜利而告终,这次战役被视为中世纪世界规模最大水战。
创造了中国水战史上以少胜多的著名战例,为统一江南奠定了基础,并为以后的北伐和攻灭元朝,统一全国创造了极为有利的条件。