跟朱文正所预料的一样,战斗最激烈的地方正是在抚州门。陈友谅这回亲自督兵猛攻,士兵们手执大盾,冒着城上飞下来的矢石,勇往直前,一个劲儿地往上冲。不一会儿,就听得到一声巨响,原来城墙被攻城士兵炸开了一个30余丈的大口子。攻城的士兵蜂拥而上,就在陈友谅攻城就要得逞之时,邓愈率领部将改用火炮还击。一时间,枪林弹雨,火光乱窜,攻城士卒慌乱之中,躲闪不及,一个个被打得头破血流。陈友谅见势不妙,命令退兵,邓愈见此时机,立即派人竖起木栅,以便挡住那30余丈的缺口。木栅还没有完全竖起来,陈友谅又反攻过来,双方开始展开肉搏之战。守将邓愈奋力拼杀,杀死数敌,这时朱文正也带着一行人马赶来增援。朱文正率军战斗不停,筑城不止,就这样循环往复,用了整整一夜的时间,终于堵住了那个大豁口。而在战场的另一侧——新城门,守城大将薛显率领敢死队主动开门出击,斩杀了陈友谅汉政权的平章刘震昭。战斗一直持续到六月中旬,陈友谅开始从长计议,改变攻击策略,专攻水关,想破栅而入。朱文正派壮士用长槊从棚内向外刺杀。陈友谅士兵纷纷从木栅外面抓住长槊,双方就这样紧抓不放,争抢不休。这时,朱文正急中生智,他又命士兵用铁钩穿透木栅刺杀对方,结果陈友谅士兵的手被刺烂,痛哭惨叫,纷纷落荒而逃。气急败坏的陈友谅改为攻取宫步、士步二门,守城部将赵德胜坐镇宫步门楼指挥防守,在激烈的战斗中不幸被流矢射中腰部,锥头深入身体六七寸深。赵德胜愤怒地拨出箭头,大声说:“自我从军以来,多次被矢石所伤,可是,可是……”这时他看着从腰腹间流出的血,脸上的表情显得痛苦万分。“大丈夫死不足惧,只恨我主还没有扫清中原这些……”话未说完,便气绝身亡。随之而来的是元帅牛海龙等人也都先后战死。洪都此时已经被陈友谅的军队层层包围,与外部断绝了联系。此时的朱文正已渐渐感到战争局面难以扭转,于是他派遣张子明趁着夜色乘小船偷偷摸出敌营,向身在应天的朱元璋告急。可是远水解不了近渴,他又派了一个绰号为“舍命王”的人,用诈降方式约见陈友谅,以便为朱元璋援军的到来拖延时间。陈友谅竟然相信了这个“舍命王”的话,放松了对洪都的进攻。可以说,此时的陈友谅已经为他的错误决定付出了沉重的代价。从他到达洪都之后,发现城南的城墙已经不是可以利用巨大的舰船就能攀上的事实开始,他就一步步陷入了与守城士兵纠缠不清的泥沼。由于他的船支离江岸还有一段相当长的距离,陈友谅不得不弃船上岸,这样一来所带来的战舰便成了一个个毫无用处的摆设。强攻不如智取,可惜陈友谅并不懂智取。陈友谅仗着人多势众,浩浩荡荡的60万人马开始强攻洪都,但是他并不重视洪都城墙的坚固,地形的限制,所能投入的兵力十分有限。尽管取得了一些战绩,但是他又中了朱文正的诈降之计。如此一来,时间竟达3个月之久,当然,这对朱元璋是大为有利的,为他的回师救驾争取了时间。陈友谅终于等到了约定的时间,他兴高采烈地准备进城之时,这才发现城内已经筑造了新的工事,准备继续进行抵抗。陈友谅气急败坏地命人把那个什么破“舍命王”拉到城下杀了,游街示众,显示其军队的威猛。可是这样一来,反而激起了守城将士的志气,纷纷以死抗争。诈降为洪都守军赢得了宝贵的时间。当时,朱元璋的两员大将徐达、常遇春正在围攻庐州。庐州守将左弼据原来也是红巾军,后来投靠了张士诚,出兵帮助吕珍攻打安丰。朱元璋击退吕珍后,令徐、常二人攻打庐州。这时日夜兼程的张子明已经赶赴到了应天。当朱元璋听了守城方面的汇报后,忙问陈友谅的军队情况如何,张子明说:“陈友谅的兵力虽多,但战死伤亡的也不少。现在由于江水已快干涸,对贼兵的大船甚为不利,况且他们长期围攻洪都城下,粮草必然短缺。再加上人心不合,假如援兵一到,必可破敌。”朱元璋让张子明先回去,告诉朱文正等再坚守几天,他会马上亲自带兵解围。
洪都被围的同时,徐达、常遇春二人正在攻打庐州,但庐州城池坚固,一时无法攻克。朱元璋认为不能因为庐州而失去洪都,就急忙命他俩撤围回师。七月六日,朱元璋援救洪都的军队与徐达、常遇春军在龙江会师,共20万人马,杀向洪都。当张子明返回洪都时,不巧在湖口被陈友谅的士兵抓获。士兵们把张子明带到陈友谅的面前,陈友谅见他是条汉子,便想留用,就对张子明说:“你若是能诱降朱文正,本人非但不治你的罪,而且还可以保你富贵。”张子明机灵过人,他先假装答应陈友谅的反间计,可是到了洪都城下,他突然对着守城士兵们大喊:“我已见过主公,援军就要赶到,你们一定坚守住,坚守……”话还未说完,陈友谅便立即从后面将他刺死。朱文正和将士们听到张子明在城下的喊话,更加坚定了守城的决心,准备迎接陈友谅的挑战。陈友谅听说朱元璋亲自率军来援,便停止了对洪都的进攻,只留少数兵马围城,自己率领舟师主力开进鄱阳湖,摆开决战的架势,迎战朱元璋。不久,陈友谅和朱元璋两军相遇于鄱阳湖。在鄱阳湖的康郎山下展开了决定生死存亡的大战,这就是历史上有名的鄱阳湖大战。战争序幕刚刚拉开时,朱元璋先派指挥戴德率领一支军队驻江北径江口,另派一支军队则是紧靠湖口的南湖口嘴,像两个门神一样,守住了鄱阳湖到长江的这个必经出口,封堵住陈友谅的回归路,把他围在了鄱阳湖里面。至正二十三年(1363年)七月二十日,两军在鄱阳湖南部的康郎山(今江西鄱阳湖内康山)相遇。朱元璋对他的部下们说:“两军相遇斗勇者为胜。陈友谅这支老贼围攻我洪都八十五天之久,现在主动提出撤围,准备与我交战,肯定是下了很大的决心的。诸将请注意,看来敌人是准备与我们拼命的,我军已是有进无退,所以我们理应拼死效力,灭取此虏!”朱元璋的讲话极大地鼓舞了士气。但是仅仅具有思想精神方面的支持还是不够的,面对陈友谅的战舰高大,联舟布阵,在湖面上一排十几里的壮观景象,朱元璋也曾暗自发出自愧不如的感慨。朱元璋所用的船只毕竟都是一些小船,交战时必须仰攻,兵力又不及对方的强大、威猛。所以在第一天的战斗中,朱元璋败了仗,损失虽然算不上惨重,但是军中的气势已明显被陈友谅一方压住了。第二天,徐达率部下冲到陈友谅的战舰阵营中,杀敌1500多人,可喜的是还缴获了一艘名为“撞倒山”的巨舰,使得军中士气大振。俞通海也乘机发炮,击毁陈友谅的20余艘战船。不过在激战中,徐达的战船也受到重创,他所在的战船被敌方炮火击中,他一面派人扑火,一面继续指挥着战斗。朱元璋见状,立即乘坐他的战船前来支援。陈友谅的太尉张定边发现了此船与众不同,最为可疑,上前一看才知,原来这就是朱元璋的指挥船,于是他令士兵一起攻击这艘战船。朱元璋的大船在躲避敌人的围追堵截中,触礁搁浅,陈友谅见机马上派人围攻。朱元璋的部将韩成与陈兆先等人为保其主,奋力抵抗,不让敌舰靠近。可是敌人还是不顾一切地往指挥舰上冲。万分危急之时,韩成向朱元璋提出要扮成朱元璋的模样,引诱敌人调转方向,追击自己。但是朱元璋不同意,他怎能让跟随自己多年的兄弟为之送死。可是韩成还是一个劲地请求,看到眼下陈友谅的战舰已经围了上来,朱元璋这同意了韩成的请求,他脱下袍服冠冕让韩成穿戴上。韩成舍生忘死,故意出现在船头,假装指挥着战斗,然后又装作投湖而死。张定边这才放松了对朱元璋的进攻,和将士们一齐欢呼起来。
恰在此时,常遇春驾船赶到,这位神射手弯弓搭箭,一箭射出,击中了张定边的前胸,张定边顿时应声倒下。这时,俞通海、廖永忠的战船也赶来救驾。船多浪急,涌动的湖水一下推动了朱元璋的白色大船,这才使朱元璋脱离了险境。然而由于常遇春的战船驶得太急,太快,冲进了浅流之中,也搁了浅。朱元璋等人再回过头来救常遇春时,陈友谅的舟舰见状又围攻了上来,双方再次展开激烈的争斗。正当常遇春的战船无法动弹,坐受围攻之时,恰巧有条快沉没的敌舰从上流漂了过来,撞上了常遇春的战船,结果歪打正着,正好把他的战船撞出了要命的浅滩。战斗从早上一直进行到夜幕降临的时候,双方才各自收兵。朱元璋部将陈兆先等人阵亡,陈友谅那边,张定边身中百矢,血染盔甲。当晚,朱元璋担心张士诚会与陈友谅联合起来趁机进攻应天,于是命令徐达立即回守。二十二日,战斗进行到了第三天。朱元璋继续亲自督战,这回他把水师较为集中的分为左中右三队,向前进攻。陈友谅的战舰阵形为一字排开,一眼望去,旌旗招展,就好似一排重峦叠嶂,阻挡在眼前。朱元璋的战船以小击大,损失惨重,左翼军此时已不得不开始向后退却,朱元璋气急之下下令斩杀了10名水军队长,但仍然不见形势好转。这样下去非自取灭亡不可,他为此焦急万分。这时,部将郭兴对朱元璋说:“不是将士们不服从军令,实在是敌我双方实力相差太悬殊,敌军船舰那么大,我们船小力薄,登船都不可能,我看现在咱们还是用火攻吧。”这句话提醒了朱元璋,朱元璋茅塞顿开,他吩咐部将常遇春调来七艘渔船,船上装满芦苇,然后又放上火药,在仓外遮上棚架,进行伪装,还扎了许多稻草人,穿戴甲胄,各执兵器,以便迷惑敌兵。常遇春还精心挑选了一批敢死队员,驾驶这些草船,前往敌军。傍晚时分,夕阳西下,湖面上刮起了微风,层层波浪泛起粼粼波光。七艘草船借着风势驶向了陈友谅高大而又笨重的战船。趁着夜色,朱元璋的草船已经慢慢地来到陈友谅的巨舰身旁,几名敢死队员,纷纷举手示意,然后便一齐点燃草船。大火刹那间吞噬了草船,敢死队员们跳下草船,湖水把船推向陈友谅的战舰。风急火烈,陈友谅的战舰一齐跟着草船燃烧起来。由于陈友谅的巨舟互相连接,一个接一个的,谁也无法摆脱这熊熊的烈火,而火势则乘着东风迅速漫延开来,一时浓烟蔽天,鄱阳湖内一片火海,朱元璋的几艘草船此时已将陈友谅的水寨和寨中的几百艘战船烧了个火焰冲天。朱元璋趁机挥师进攻,陈友谅的弟弟,号称“五王”的陈友仁,也因慌乱死在了乱军之中。他的另一个弟弟陈友贵以及江西行省平章陈普略也被烧死。陈友谅不仅失去战船数百艘,而且损失士卒数万人。经此一役,陈友谅心中气愤更是难平,越想越气。二十三日,双方继续交战。这回朱元璋的水师已经占据了主动,他率领的水师冲入敌军,来去自如,他所乘坐的白色指挥船实在太醒目了,陈友谅派遣他的多路水师将其灭掉。朱元璋几次陷入了困境,最后还是侥幸逃脱了。晚上,朱元璋下令把所有船只的桅杆和船身都涂成白色。第二天,双方再交战时,陈友谅已经无法辨认出哪艘战舰是朱元璋的指挥舰了。陈友谅的船舰是红色的,而朱元璋的战船是一律是白色的。双方交战在一起,红白相间,令人眼花缭乱,在湖面上密密麻麻混作一团。一会儿数只白船追击一只红船,一会儿又是多只红船围追堵截一只白船。朱元璋部将俞通海、廖永忠、张兴祖、赵庸等人驾着六只白船深入敌后,使得敌军大乱。俞通海等人驾船冲进敌营,眼看着就要被敌军的战舰所吞没了,可是又奇迹般地杀出了敌阵。俞通海等人如此舍身忘命,令朱元璋和其他将士们勇气大增,信心大增,不禁齐声欢呼起来。陈友谅军这时开始发动炮击,炮弹所落之处,无不击起层层巨浪,波涛竖起,响声更是震耳欲聋,令人心惊胆战。这时,一颗炮弹正朝着朱元璋所在的战船飞来,侍立在他身旁的刘基,大呼:“主公快闪开!”,朱元璋还没有反应过来,便听见一声巨响。陈友谅从远处望去,以为朱元璋必死无疑了,于是开怀大笑起来,说道:“朱元璋啊,朱元璋,想不到你也有今天。”