朱元璋的地盘一天天扩大,陈友谅的地盘一天天缩小,形势的发展越来越有利于朱元璋而不利于陈友谅。陈友谅非常气忿,依然决心要消灭朱元璋。他征调大批铁工木匠,重新建造大型战舰数百艘。这些船高数丈,分上中下三层,每层都有走马棚,船身刷上红油漆。最大的战舰可容1000多人,小的也可以载几百人。公元1363年四月,陈友谅出动他的全部军队,号称60万,带上家属和文武百官,浩浩荡荡地向洪都(今江西省南昌市)进发。
陈友谅到达洪都,登岸围城。洪都守将朱文正派兵分门据守。陈友谅命令将士们拼命攻城,把城墙攻破了一个20多丈长的大缺口。守将邓愈命令士兵用火铳击退敌军,连夜在缺口外边立上木栅,掩护筑城,只一夜工夫就把城墙筑好了。陈友谅军用尽攻城的方法,朱文正也用尽防御的方法,战斗进行得十分激烈,双方伤亡都很惨重。洪都攻防战,一直打了85天。直到这年七月,朱元璋亲自率领20万大军来救援,进到湖口,陈友谅才不得不从洪都撤围,把大军开到鄱阳湖去迎战。
陈友谅军队人数众多,水军船舰又高又大,在兵力上仍然处于优势。面对着这样的强敌,朱元璋把水军分为11队,每队都配备火铳、长弓、大弩,作战的时候,先发火铳,再射箭,最后是白刃厮杀。朱元璋部下的大将徐达首先率军出战,击败了陈友谅的先锋部队,杀死1500人,缴获一艘大型战舰,胜利回营,朱军士气更加旺盛。在一次战斗里,陈友谅的勇将张定边冲到朱元璋乘坐的战舰面前。由于水浅,朱元璋的战舰搁住了,动弹不得。牙将韩成为了保护朱元璋脱险,自己穿戴好朱元璋的衣帽,跳入水中。敌军以为朱元璋已经投水,就放松了围攻。朱元璋的大将常遇春一箭射中张定边,敌军战船才开始后退。趁着江水涨潮,朱元璋的战舰才驶离了险地。
在战斗进行中,朱元璋看出陈友谅军联舟布阵,动作不灵的弱点,决定采纳部将郭兴的建议,用火攻来战胜敌人。朱元璋命令水军准备火炮、火铳、火箭、火蒺藜等各种火器,只等发动进攻的时候,将这些火器同时发射,焚烧敌军的大舰。又命令准备一批火攻用的小船,载上芦苇,中间装进火药,周围排列身披甲胄、手拿武器的草人,加以伪装。再在各条船的船梢上系一只轻快小船,准备点火之后士兵乘小船撤走。一切都准备妥当了,黄昏时候起了大东北风。朱元璋命令敢死士驾上七条火攻小船,冲向陈友谅的船队,乘风点火,发起火攻。七条小船像七条火龙,窜进敌军船队,同时,朱元璋的水军也一齐发射各种火器,把敌军的大小战船都烧着了。火借风威,风助火势,浓烟弥漫,烈焰腾空,把鄱阳湖湖水照得通红。陈友谅军被烧死、淹死的无数,被俘的、投降的人数就更多。朱元璋命令不许杀害俘虏,对受伤的要给予治疗,然后把他们全部放了回去。这样,又争取了不少陈友谅军的将领和士卒,包括陈友谅的侍卫长、左、右金吾将军,都前来归降了。
常遇春一箭射中了张定边,陈军战船才开始后退。
从战争开始到结束,朱元璋一直亲自指挥将士,坚持战斗,虽然身边的卫士都战死了,仍然不肯后退一步。又经过几次激烈的战斗,朱军控制了湖口,陈友谅军一败再败,并且粮食已经吃光,实在打不下去了。陈友谅见大势已去,只好带着残兵败将,从湖口突围,不料在突围的时候被飞箭射死。张定边用船装上陈友谅的尸首,和太子陈理一起,连夜逃回武昌。第二天,陈友谅的副丞相陈荣等收集全部残余水军50000多人,向朱元璋投降。鄱阳湖之战,以朱胜陈败告终。
鄱阳湖之战,是朱、陈两军决定生死存亡的大会战,朱元璋最后取得了完全胜利,为他平定江南奠定了基础,也为他进一步北上灭元,统一中国,作了必要的准备。
这次战后,在一次军事会议上,朱元璋分析了双方胜败的原因,他说:“天时不如地利,地利不如人和,归根到底,打仗要靠人。陈友谅虽然船多人多,但是内部不团结,人各一心,上下猜疑,而且连年用兵,老是打败仗,不会蓄积力量,不善于捕捉有利战机,所以最后失败了。我军所以能够取得胜利,是因为既掌握了战机,又能将士一心,得了人和,因此鄱阳湖之战,就像鸷〔zhi致,老鹰一类的凶猛的鸟〕鸟捉鸡,使陈友谅‘巢卵俱覆’。”