元末农民起义势力蜂起,其中较强的是朱元璋和陈友谅。在至正二十年(1360年)五月,陈友谅称帝,国号为汉。朱元璋在应天(今南京)定都,筹备要扫清其他势力,一统天下。
由于陈友谅挟持皇帝徐寿辉,实力增加,兵强粮足,拥有战舰数百艘之多,其中有可日行千里的“混江龙”“塞断江”“撞倒山”等大舰。陈友谅抓紧训练兵马,并与另一支起义军领袖张士诚联系,打算联手攻打朱元璋。
陈友谅与张士诚联手攻打朱元璋的消息传到应天城里,老百姓议论纷纷,有的正准备逃走。朱元璋知道这个情况后,立即传令,如果谁提出投降或者逃跑,就杀谁。城中人心一时稍见安定。朱元璋急忙召来刘基(伯温)商议对策,最后决定,诱敌深入,各个击破。陈友谅认为自己兵强马壮,有恃无恐,果然中了朱元璋的计,陷入困境。
就在朱元璋与陈友谅拉开战幕时,小明王派人来求援,说自己遭受元军包围。朱元璋认为支持小明王可以赢得民心,并且可利用小明王所在地安丰保住应天。为此,朱元璋亲自率领大军前往安丰。
1363年农历四月,陈友谅乘朱军主力救援安丰,江南空虚之机,以号称60万的水陆大军于十一日围攻洪都,占领吉安、临江、无为州。洪都地处赣北平原,位于赣江下游,由赣江向北经鄱阳湖与长江相连,军事地位甚为重要。陈军登陆后,用各种攻城器械从四面八方向洪都城发起猛攻。守城朱军浴血奋战,死守洪都,坚持月余。
此时,朱元璋已回到应天,但主力仍由徐达率领正在围攻庐州。当朱元璋获悉陈友谅全军出动围攻洪都而未直取应天,并悉江水日涸,不利陈军巨舰行动,以及陈军缺粮、士卒多死等消息后,认为这正是消灭陈友谅的大好时机。
朱元璋遂一面命洪都守军再坚守一月,疲惫陈军,争取时间;一面命徐达撤庐州之围,回师应天。七月初六,朱元璋亲率水军20万,往救洪都。十六日进抵湖口。首先派兵守住泾江口(今安徽宿松南),另派一军屯于南湖嘴(今江西湖口西北),切断陈友谅归路;又派兵扼守武阳渡(今江西南昌县东),以防陈军逃跑;朱元璋则亲率水师由松门(今江西都昌南)进入鄱阳湖,形成关门打狗之势。陈友谅听说朱元璋大军来援,即撤洪都之围,东出鄱阳湖迎战。一场规模空前、激烈异常的生死大决战,就此在鄱阳湖面展开。
二十日,两军在康郎山(今江西鄱阳湖内)湖面遭遇。时陈军巨舰联结布阵,展开数十里,“望之如山”,气势夺人。朱元璋针对其巨舰首尾连接,不利进退,将己方舰船分为20队,每队都配备大小火炮、火铳、火箭、火蒺藜、大小火枪、神机箭和弓弩,下令各队接近敌舰时,先发火器,次用弓弩,靠近敌舰时再用短兵器进行格斗。次日,双方展开激战。朱军大将徐达身先士卒,率舰队勇猛冲击,击败陈军前锋,毙敌1500人,缴获巨舰一艘。俞通海乘风发炮,焚毁陈军20余艘舰船,陈军被杀和淹死者甚众。但朱军伤亡也不少,尤其是朱元璋座舰搁浅被围,险遭不测。战斗呈胶着状态。从早晨至日暮,双方鸣金收兵,战斗告一段落,双方互有伤亡,不分胜负。
二十二日,朱元璋亲自率领水师出战。但陈舰巨大,朱军舰小不能仰攻,接连受挫。这时朱元璋及时采纳了部将郭兴建议,决定改用火攻破敌。黄昏时分湖面上吹起东北风,朱元璋选择勇敢士兵驾驶7艘渔船,船上装满火药柴薪,迫近敌舰,顺风放火,风急火烈,迅速蔓延。一时烈焰飞腾,湖水尽赤,转瞬之间烧毁陈军数百艘巨舰,陈军死伤过半,陈友谅的两个兄弟及大将陈普略均被烧死。朱元璋挥军乘势发起猛攻,又毙敌2000余人。二十三日,双方又有交锋,陈友谅瞅准朱元璋旗舰展开猛攻。朱元璋刚刚移往他舰,原舰便被陈军击碎。二十四日,俞通海等人率领6舰突入陈军舰队,勇敢驰骋,势如游龙,如入无人之境。朱军士气大振,发起猛烈攻击。最后,陈军不支败退,遗弃的旗鼓器仗浮蔽湖面。陈友谅只得收拢残部,转为防御,不敢再战。
当天晚上,朱元璋乘胜进扼左蠡(今江西都昌西北),控制江水上游,陈友谅亦退保诸矶(今江西星子南)。两军相持3天,陈军屡战屡败,形势渐趋不利。陈友谅两员大将见大势已去,于是投降了朱元璋,陈军内部军心动摇,力量更加削弱。陈友谅又气又恼,下令把抓到的俘虏全部杀掉以泄愤。
朱元璋却反其道而行之,将俘虏全部送还,并悼死医伤,瓦解陈军士气,从而大得人心。陈军内部分崩离析,士气更加低落。朱元璋判断陈军可能突围退入长江,乃移军湖口,在长江南北两岸设置木栅,置大舟火筏于江中,又派兵夺取蕲州、兴国,控制长江上游,堵敌归路,待机歼敌。
经过1个多月的对峙,陈友谅被困湖中,军粮殆尽,计穷力竭。于是孤注一掷,冒死突围,八月二十六日,由南湖嘴突围,企图进入长江退回武昌。行至湖口时,朱军以舟师、火筏四面猛攻,陈军无法前进,复走泾江,又遭伏兵阻击,左冲右突,打不开生路。陈友谅中箭而死,军队溃败,5万余人投降。至正二十四年(1364年)二月,朱元璋攻下武昌,陈友谅儿子陈理投降,朱元璋的势力扩大到原陈友谅的所属地区。
此次水战,从七月二十日开始到八月二十六日结束,前后历时37天,其时间之长、规模之大,投入兵力、舰只之多、战斗之激烈都是空前的。
陈友谅的失败,一个重要的原因是战略指挥上的失误。本来,朱元璋率主力北救安丰,造成应天空虚。如果陈友谅不是先攻洪都,而是以一部兵力对洪都进行牵制,主力顺流东下直攻应天,那么朱元璋将处于陈张夹攻、进退失据的不利处境。但陈友谅却把矛头指向小而坚的洪都城,致使数十万大军局促处于狭小地域,难以展开,且又没有派兵扼守江湖要津,置后路于不顾。屯兵坚城之下,苦战3月,师老兵疲,士气低落。
朱元璋之所以能以少胜多,以弱胜强,以小胜大,正是巧妙地利用了陈友谅错误的结果。面对舰只庞大、装备精良的陈军,朱元璋冷静、敏捷地捕捉敌方的弱点和失误,化不利为有利,进入湖口之初,就在武阳水与鄱阳湖、长江与鄱阳湖各隘口,重重派兵扼阻,限制其兵力展开,阻止其发挥多兵大舰的优势,形成了对陈友谅的战略包围,因此从开始便掌握了战略主动权。然后他又集中大部战船和兵力逐次打击陈军,并善于利用风向、水流等自然条件,及时抢占有利攻击阵位,不失时机地实施火攻,充分发挥火器的作用,终于以少胜多、以小击大、以弱胜强,创造了我国水战海战史上的著名战例。