七月初六,朱元璋親率水軍20萬,往救洪都。十六日進抵江西湖口。
首先派兵守住涇江口(今安徽宿松南),另派一軍屯於南湖嘴(今江西湖口西北),切斷陳友諒歸路;又派兵扼守武陽渡(今江西南昌縣東),以防陳軍逃跑;朱元璋則親率水師由松門(今江西都昌南)進入鄱陽湖,形成關門打狗之勢。
陳友諒聽說朱元璋大軍來援,即撤洪都之圍,東出鄱陽湖迎戰。一場規模空前激烈異常的生死大決戰,就此在鄱陽湖面展開。
二十日,兩軍在康郎山(今江西鄱陽湖內)湖面遭遇。時陳軍巨艦聯結布陣,展開數十裡,“望之如山”,氣勢奪人。朱元璋針對其巨艦首尾連接,不利進退,將己方艦船分為20隊,每隊都配備大小火炮、火銃、火箭、火蒺藜、大小火槍、神機箭和弓弩,下令各隊接近敵艦時,先發火器,次用弓弩,靠近敵艦時再用短兵器進行格鬥。
次日,雙方展開激戰。朱軍大將徐達身先士卒,率艦隊勇猛衝擊,擊敗陳軍前鋒,斃敵1500人,繳獲巨艦一艘。
俞通海乘風發炮,焚毀陳軍20余艘艦船,陳軍被殺和淹死者甚眾。
但朱軍傷亡也不少,尤其是朱元璋座艦擱淺被圍,險遭不測。
戰鬥呈膠著狀態。從早晨至日暮,雙方鳴金收兵,戰鬥告一段落,雙方互有傷亡,不分勝負。
二十二日,朱元璋親自率領水師出戰。但陳艦巨大,朱軍艦小不能仰攻,接連受挫。這時朱元璋及時采納了部將郭興建議,決定改用火攻破敵。
黃昏時分湖面上吹起東北風,朱元璋選擇勇敢士兵駕駛7艘漁船,船上裝滿火藥柴薪,迫近敵艦,順風放火,風急火烈,迅速蔓延。
一時烈焰飛騰,湖水盡赤,轉瞬之間燒毀陳軍數百艘巨艦,陳軍死傷過半,陳友諒的兩個兄弟及大將陳普略均被燒死。
朱元璋揮軍乘勢發起猛攻,又斃敵2000余人。
二十三日,雙方又有交鋒,陳友諒瞅準朱元璋旗艦展開猛攻。朱元璋剛剛移往他艦,原艦便被陳軍擊碎。
二十四日,俞通海等人率領6艦突入陳軍艦隊,勇敢馳騁,勢如遊龍,如入無人之境。朱軍士氣大振,發起猛烈攻擊。
最後,陳軍不支敗退,遺棄的旗鼓器仗,浮蔽湖面。陳友諒隻得收攏殘部,轉為防禦,不敢再戰。當天晚上,朱元璋乘勝進扼左蠡(今江西都昌西北),控制江水上遊,陳友諒亦退保諸磯(今江西星子南)。
兩軍相持3天,陳軍屢戰屢敗,形勢漸越不利。陳友諒兩員大將見大勢已去,於是投降了朱元璋,陳軍內部軍心動搖,力量更加削弱。
陳友諒又氣又惱,下令把抓到的俘虜全部殺掉以泄憤。而朱元璋卻反其道而行之,將俘虜全部送還,並悼死醫傷,瓦解陳軍士氣,從而大得人心。
陳軍內部分崩離析,士氣更加低落。朱元璋判斷陳軍可能突圍退入長江,乃移軍湖口,在長江南北兩岸設置木柵,置大舟火筏於江中,又派兵奪取蘄州、興國,控制長江上遊,堵敵歸路,待機殲敵。
經過1個多月的對峙,陳友諒被困湖中,軍糧殆盡,計窮力竭。於是孤注一擲,冒死突圍。
八月二十六日,由南湖嘴突圍,企圖進入長江退回武昌。
行至江西湖口時,朱軍以舟師、火筏四面猛攻,陳軍無法前進,複走涇江,又遭傅友德伏兵阻擊,左衝右突,打不開生路,陳友諒中箭而死,軍隊潰敗,5萬余人投降。
此次水戰,從七月二十日開始到八月二十六日結束,前後歷時37天,其時間之長、規模之大,投入兵力、艦隻之多、戰鬥之激烈都是空前的。
決戰以朱元璋的完全勝利而告終。這次戰役被視為中世紀世界規模最大水戰。
創造了中國水戰史上以少勝多的著名戰例,為統一江南奠定了基礎,並為以後的北伐和攻滅元朝,統一全國創造了極為有利的條件。