七月初六,朱元璋亲率水军20万,往救洪都。十六日进抵江西湖口。
首先派兵守住泾江口(今安徽宿松南),另派一军屯于南湖嘴(今江西湖口西北),切断陈友谅归路;又派兵扼守武阳渡(今江西南昌县东),以防陈军逃跑;朱元璋则亲率水师由松门(今江西都昌南)进入鄱阳湖,形成关门打狗之势。
陈友谅听说朱元璋大军来援,即撤洪都之围,东出鄱阳湖迎战,一场规模空前激烈异常的生死大决战,就此在鄱阳湖面展开。
二十日,两军在康郎山(今江西鄱阳湖内)湖面遭遇。时陈军巨舰联结布阵,展开数十里,“望之如山”,气势夺人,朱元璋针对其巨舰首尾连接,不利进退,将己方舰船分为20队,每队都配备大小火炮、火铳、火箭、火蒺藜、大小火枪、神机箭和弓弩,下令各队接近敌舰时,先发火器,次用弓弩,靠近敌舰时再用短兵器进行格斗。
次日,双方展开激战。朱军大将徐达身先士卒,率舰队勇猛冲击,击败陈军前锋,毙敌1500人,缴获巨舰一艘。
俞通海乘风发炮,焚毁陈军20余艘舰船,陈军被杀和淹死者甚众。
但朱军伤亡也不少,尤其是朱元璋座舰搁浅被围,险遭不测。
战斗呈胶着状态。从早晨至日暮,双方鸣金收兵,战斗告一段落,双方互有伤亡,不分胜负。
二十二日,朱元璋亲自率领水师出战。但陈舰巨大,朱军舰小不能仰攻,接连受挫。这时朱元璋及时采纳了部将郭兴建议,决定改用火攻破敌。
黄昏时分湖面上吹起东北风,朱元璋选择勇敢士兵驾驶7艘渔船,船上装满火药柴薪,迫近敌舰,顺风放火,风急火烈,迅速蔓延。
一时烈焰飞腾,湖水尽赤,转瞬之间烧毁陈军数百艘巨舰,陈军死伤过半,陈友谅的两个兄弟及大将陈普略均被烧死。