吴王朱元璋因武昌久未攻下,决定再次亲征。到武昌之后,朱元璋察探地形,得知城东有一座高冠山,汉兵就驻扎在那里,把它当做一道天然屏障。朱元璋审视完毕,对诸将说:“要破此城,必夺此山。你们哪个敢率兵上去?”诸将面面相觑,只有傅友德奋然道:“臣愿意效劳!”朱元璋大喜,问他需要多少兵马。傅友德说:“几百精兵足矣!”朱元璋让他自行挑选。傅友德挑出五百名壮士,乘夜来到山下,一鼓作气,还真夺下了高冠山。从高冠山俯瞰武昌,城中一切了如指掌。城中守将陈英杰向来骁勇,见高冠山被占,气愤得不得了。第二天,竟然偷偷溜出城来,混到吴营里面,径直来到中军帐下。朱元璋坐在床上,突然瞧见陈英杰,便大声喊道:“郭四,有刺客!”郭四是郭英的小名,当晚正轮他值班。听到喊声,郭英急忙持枪跑了进来,正巧碰上刺客,于是手起枪落,将他刺死。朱元璋解下自己穿的红锦袍,披在郭英身上,拍着他的肩膀夸奖道:“你真是我的尉迟敬德啊!”
又过了一天,有探子来报,说汉将张必先带着潭岳一带的兵马前来支援,汉兵已经到夜婆山了。朱元璋说:“张必先来了,要用计胜他。”随即召常遇春入帐,教他一条密计,让他速速去办。常遇春领命而去。过了五天,常遇春擒住了张必先,前来复命。朱元璋命人将张必先推到城下,对城中守将说:“你们唯一的希望张必先已经被我擒获了!速速投降吧,免得生灵涂炭!”张定边站在城上,问张必先:“你是怎么被他们擒住的?”张必先说:“不用说了,汉数已终,兄弟还是赶快投降吧!”接着,朱元璋又派降将罗复仁入城招降。过了半天,罗复仁回来禀报,说陈理愿意投降。朱元璋打开军门,陈理带着张定边等人进来,低着头跪在那里。陈理尚且年幼,浑身颤抖,不敢抬起头来。朱元璋不禁动了恻隐之心,亲自将他扶起,和颜悦色地说:“我不治你的罪,你不要惊慌。”说完,又命陈理入城,劝慰他的母亲。陈理母子见城中百姓吃不饱饭,就将府库中的储蓄全部取出买米赈灾。旁边的郡县看到这种情况,全都望风归降。朱元璋在武昌设立湖广行中书省,命参政杨璟居守,并封陈理为归德侯。后又在鄱阳湖康郎山以及南昌府两个地方,建了阵亡将士祠,算是褒忠报功。
陈友谅气数已尽,接着轮到张士诚了。张士诚听说朱元璋西征,就趁机侵城略地,于是,南至绍兴,北至通泰、高邮、淮安、濠泗,东北至济宁,通通成了他的属地,幅员辽阔,声势浩大。张士诚让部下对其歌颂功德,并向朝廷邀封。朝廷不答应,张士诚就自称吴王。随后建府第,置官员。任用弟弟张士信为左丞相,妹夫潘元绍为参谋,一切政事都由他们二人做主。张士信荒淫无度,整天玩色子、看戏、奸淫妇女,身边围满了狎客、歌伎。
朱元璋回到应天后,命徐达为大将军,常遇春为副将军,率领二十万大军讨伐张士诚,并下令军中:“此行不得妄杀一人!不得抢掠百姓!不得毁人房屋!不得掘张士诚的祖坟!”接着召徐达、常遇春入内,问他们,“你们准备先攻打哪里?”常遇春说:“当然是直捣平江了。平江是张士诚的老窝,只要攻破平江,其余郡县就可以不攻自破了。”朱元璋说:“错!张士诚从盐贩起家,与张天麒、潘原明等人互相支援,倚为手足。一旦张士诚穷途末路,张天麒等人定会拼死相救。到时候,张天麒从湖州出兵,潘原明从杭州出兵,援兵四至,你如何取胜?如今之计,要先攻湖州,剪去他的羽翼,然后再移兵平江,这样才能稳操胜券。”接着朱元璋又对徐达说,“前些天,张士诚的部将熊天瑞前来投降,我看他不是真心的。你不要把我的计划泄露出去,只管让熊天瑞跟着,就说是要直捣平江。他一定会去通风报信。”徐达与常遇春领命而去。朱元璋又约李文忠攻打杭州,华云龙攻打嘉兴,同时发兵,牵制敌人的势力。
徐达、常遇春率兵二十万,从太湖攻向湖州,沿途战无不胜,擒住了尹义、陈旺、石清、汪海等人。张士信驻守在崑山,闻风而逃。徐达查阅将士,发现少了一个熊天瑞,想必是到张士诚那里报信去了。于是传令火速前进,直达湖州的三里桥。张天麒听说徐达要来攻打,急忙率领偏将黄宝、陶子宝等人,分道迎战。黄宝从南路出兵,正巧与常遇春碰面,一战即逃。常遇春追到城下,黄宝来不及入城,被常遇春擒获。张天麒、陶子宝得知黄宝被擒的消息,不战自退。徐达领兵围住湖州,守兵都没什么斗志,惶惶不可终日。后来,援将李伯昇派荻港潜入城中,人心才稍稍安定下来。探马将此事报告徐达,徐达就派将士环布在四周,截击援军。忽又听说张士诚的部将吕珍、朱暹以及五太子等人,率兵六万,已经到城东了。徐达便和常遇春说:“吕珍、朱暹都是骁勇悍将。还有什么五太子,听说是张士诚的养子,此人短小精悍,能从平地跳起一丈多高。我们还是小心为妙!”常遇春点头说:“你来围城,我去截击援兵,随机应变。”徐达点头答应,分兵十万给常遇春调遣。常遇春率兵来到姑嫂桥,连连筑下十个堡垒,分别防守要隘。吕珍等人不敢上前,只好在城东设下五个寨子,与常遇春相持。常遇春也不与他交锋,一心只想截断他的粮道。
经探听得知,张士诚的妹夫潘元绍运送粮饷到达乌镇。常遇春于是发兵偷袭,大获全胜。后来张士诚的部将徐志坚带水兵偷袭姑嫂桥,竟被活捉。五太子因屡遭挫败,一气之下集合水兵去攻打常遇春的大营。常遇春出营接仗。五太子的士兵人人奋勇,个个争先。双方厮杀起来,常遇春这边稍逊一筹,险些被他击退。正在此时,薛显顺风纵火,把五太子的兵船烧得乌黑。五太子只好逃回去,与吕珍、朱暹等人商议,吕珍、朱暹面面相觑,支吾了好一阵子,只想出一条纳款投诚的计策。几个人投降后,常遇春立即禀报徐达。徐达令吕珍等人到城下,招呼李伯昇、张天麒等人出降。李伯昇、张天麒无可奈何,只好交了降书,迎接徐达入城。湖州拿下。
张士诚听说湖州沦陷,急得手足无措。不料又传来杭州、嘉兴沦陷的消息,不由得魂飞天外,连身子都抖了起来。后来吴江沦陷,参政李福、知州杨彝降敌的消息也传了回来。又过了两天,城外炮声隆隆,鼓声阵阵。张士诚知道是敌军杀到,急忙调兵登城,严防死守。第二天一早,张士诚登上城楼,只见四面八方都竖着敌军的旗帜:葑门驻扎着徐达的军队;虎邱驻扎着常遇春的军队;娄门驻扎着郭兴的军队;胥门驻扎着华云龙的军队;阊门驻着汤和的军队;盘门驻着王弼的军队;西门驻着张温的军队;北门驻着康茂才的军队;东北驻着耿炳文的军队;西南驻着仇成的军队;西北驻着何文辉的军队。各军磨刀霍霍,弄得这位张大王心烦意乱,只好命一班勇胜军加紧防守。勇胜军都是强盗出身,个个剽悍异常,张士诚格外恩宠,称他们为“十条龙”。这十条龙确实厉害,徐达等人昼夜猛攻,都不能得手。俞通海带兵攻下太仓、崑山、崇明、嘉定各县,回来复命的时候,见平江还没有攻下,不觉义愤填膺,于是率先猛扑。谁知城上的矢石确实厉害,攻了一个时辰,身中数箭,无功而返。徐达看他伤得很重,就把他送回应天。没过几天俞通海就死了。朱元璋不免悲痛。
光阴易过,转眼间几个月过去了。张士诚焦躁得很,竟然派徐义、潘元绍等人带着勇胜军潜出西门,绕到虎邱,去袭击常遇春的大营。常遇春事先已经得知,与王弼会师赶去拦截。两军相会,互相拼杀起来。张士诚又亲自派精兵支援,来势汹汹。常遇春的部下杨国兴战死,士兵们都有点畏缩不前。王弼看到这种情况,一马当先,挥着双刀,冲入敌阵。敌人被冲乱,常遇春乘机掩杀过来,竟将张士诚的将士逼到沙盆潭。张士诚连人带马堕入潭中,差点淹死。十条龙全部下水相救,等把张士诚救上岸,十条龙已经死了九条。张士诚狼狈地逃回城中,检查将士,发现伤亡无数,竟然捶胸痛哭起来。
正在这时,有位客人求见。张士诚召他进来问:“你要说什么?”客人回答:“您可知道天数?从前项羽叱咤风云,百战百胜,最后却被汉高祖刘邦打败,自刎乌江。可见天数难逃。您当年以十八名勇士攻入高邮,击退百万元兵。东据三吴,拥千里土地,南面称王,不亚于项羽。如果能爱民如子,赏罚分明,天下不难平定。你怎么会沦落到这种地步呢?”张士诚说:“你之前不说,现在已经来不及了。”客人又说:“曾经您门客如海,子弟亲戚闭目塞听,内外将帅朝歌夜饮,日日酣醉,哪知道有今天?就算有人想说,您也不愿意听啊。”张士诚叹了口气:“事已至此,还说什么。”客人说:“在下倒是有一计,不知道您愿不愿意听?”张士诚说:“如果真能大难不死,你不妨直言。”客人说:“不如早从天命,自求多福。你不做皇帝,还能做个万户侯。得失之间,还要您自己考虑!”张士诚沉思了很久说:“你先下去,让我想一想!”客人退下。
张士诚踌躇了一个晚上,决定不降。随后带兵冲出胥门,又被常遇春杀退。张士信督兵守城,被飞炮击中脑袋,当场死去。熊天瑞拼死抵御,甚至拆毁祠堂、民居,作为炮料,轮番击射。徐达攻了很多天,死伤无数,才攻破葑门。常遇春也攻破阊门,蜂拥而入。守将唐杰、周仁、徐义、潘元绍等人招架不住,先后投降。张士诚收集两三万残兵败将,在万寿寺东街巷战。那时大势已去,不到一会儿,士兵们就已纷纷逃散。张士诚逃回内城。徐达等人乘势杀入。只见张士诚的宫中,烈焰翻腾,照红了半片天空。