陳友諒休息了幾天,又去攻打新城門。隻見城內衝出一隊人馬,如狼似虎,銳不可當。首將便是薛顯,他提刀突陣,尤其凶猛。陳友諒的部下劉震不識好歹,上前阻攔,被薛顯橫腰一刀,劈成兩段。剩下的小兵全都嚇跑了。薛顯追殺一陣,收兵回去。
陳友諒轉而攻打水關。水關設有柵欄,朱文正募集壯士防守。見陳友諒帶兵前來,就從柵欄的縫裏伸出長槊,迎頭猛擊。陳友諒的士兵倒也厲害,竟然上來奪槊。不料裏麵換用鐵戟刺出,士兵奮手去奪,隻聽得一聲聲慘號。原來這鐵戟用火淬過,一經挨著,皮膚馬上燙爛。所以無人敢進,水關安然無恙。
陳友諒接著分兵攻陷了吉安、臨江,招降了李明道,殺死曾萬中。擒住劉齊、朱叔華、逍天麟三人,送到南昌城下開刀,並對城上的守兵喊道:“如果不投降,這就是你們的下場!”守兵不為所動。陳友諒接著攻打官步、士步兩門,趙德勝早晚巡城,指揮將士。忽然飛來一支硬箭,射中腰眼,深達六寸。趙德勝頓時忍不住痛,拔劍歎道:“我壯年從軍,屢受重傷,卻都沒有這次厲害。看來今天是命中該絕,隻恨不能跟著我家主公掃清中原!”說完後暈倒在地,沒過多久便死了。趙德勝死後,將士們越發奮勇。陳友諒圍攻不下,但又不肯舍去,隻好整天圍城。朱文正假裝派人送錢過去,讓他不要攻得太急。暗地裏命千戶侯張子明偷偷越出水關,到應天告急。
張子明扮成漁夫的模樣,搖著漁舟,唱著漁歌,混了出去。晝行夜止,半個月才到應天。朱元璋這才知道南昌被困,並問陳友諒的兵勢如何。張子明說:“陳友諒傾國而來,雖然來勢洶洶,戰死的倒也不少。現在江水幹涸,巨船不方便轉舵,想必糧食也快吃完了,所以要想打敗他們也不難。”朱元璋說:“你先去告訴朱文正,再堅守一個月,我定會親自支援!”張子明領命而去;仍然扮成漁翁的樣子,搖船返回。不料到了湖口,竟然被陳友諒的巡邏兵抓住,送到了陳友諒軍前。陳友諒問他:“你是什麼人?敢如此大膽!”張子明說:“我是張子明,到應天求援的。”陳友諒又問:“朱元璋來支援嗎?”張子明說:“馬上就到了。”陳友諒勸他說:“你要是想得到榮華富貴,就去和朱文正說,應天無暇支援,讓他速速投降。”張子明睜大眼睛說:“你可別騙我!”陳友諒說:“絕不騙你。”張子明說:“你要真不騙我,我就去說。”陳友諒便命人將他押到城下,讓朱文正答話。張子明高聲喊道:“朱統帥聽著,張子明出使應天已經回來了。主上令我傳諭,一定要堅守此城,援軍馬上就到了!”陳友諒聽了這話怒火中燒,當即殺了張子明。
朱元璋因南昌危急,飛調徐達等人回軍,集師二十萬,即日出發。走到湖口的時候,先派指揮戴德率領兩軍,分別駐紮在涇江口、南湖嘴,攔截陳友諒的歸路。又約信州的兵馬防守武陽渡,防止陳友諒逃跑。安排好之後,繼續前進。
陳友諒圍攻南昌已經八十五天,聽說朱元璋前來支援,急忙撤圍東下,到鄱陽湖迎戰。朱元璋帶著水兵,從鬆門進入鄱陽湖,直抵康郎山。遠遠看見前麵戰船林立,料定是陳友諒的軍隊,就對諸將說道:“我看敵舟首尾相連,氣勢雖然不小,但進退很不方便,要想破他,也不是件難事。”徐達在旁邊說:“不如用火攻。”朱元璋說:“我也有這個意思。”於是將水兵分為二十隊,每條船上都載著火器、弓弩。命令各將士駛進敵船的時候,先發火器,再放硬箭。眾將士依計而行,果然一戰獲勝,殺敵一千五百餘人。
這時候,前後左右的敵船多半被火燒著,連徐達所坐的大船,也著了火。徐達連忙令將士撲火,奮力再戰。朱元璋擔心徐達有閃失,就派船去支援。徐達的部將看見援船,更是耀武揚威,爭先驅殺。不料敵兵竟然避開徐達,前去圍攻朱元璋。朱元璋見敵兵靠近,連忙鼓船督戰。船還沒走多遠,忽然被困住。陳友諒的驍將張定邊乘機侵犯,一聲號令,四麵的漢兵把朱元璋困在了中間。宋貴、陳兆先等人舍命抵抗,身中數十箭,最終戰死。朱元璋這時也大驚失色。韓成上前稟報說:“殺身成仁是臣子的大義。臣願意替主公去死,敢請主公與臣交換衣服。隻要主公逃脫,臣死有何妨?”朱元璋沉思不決。韓成正要再說,隻聽得敵兵的聲音越來越近,隱約聽到速殺、速降的話。韓成急得不行,隻好喊道:“主公快聽臣的話,否則同歸於盡,有什麼好處!”朱元璋這才脫下衣冠,遞給韓成。韓成更衣完畢,回頭看著朱元璋說:“主公保重!韓成去了!”朱元璋心中不忍。無奈情況危急,隻好任由他去。韓成登上船頭,高聲喊道:“陳友諒聽著!為了你我二人,你勞師動眾,塗炭生靈!我今天就讓你威風,你不要再大開殺戒了!你看著!”說完之後,撲通一聲,竟然跳入江中。