至正二十三年(1363)四月,陈友谅“忿其疆土日蹙”,建造高数丈的巨舰,纠集号称六十万人的大军,倾巢而出,进围南昌。朱军守将朱文正、邓愈、赵德胜、薛显率领全城将士殊死搏战,坚守八十五天,使陈友谅顿兵坚城之下,未能前进一步。南昌守军浴血奋战,为朱元璋从容调兵遣将,准备与陈友谅决战赢得了宝贵的时间。
七月初六,徐达遵照朱元璋的指令,回师救援南昌。朱元璋在龙江(今江苏南京兴中门外)誓师,亲率大军二十万进击陈友谅。陈友谅听说朱元璋亲率大军到来,遂解南昌之围,东出鄱阳湖返战。这是一场关系到双方生死存亡的大决战,史称“鄱阳湖之战”。徐达作为主攻部队,率军先行,首先与陈友谅相遇于康郎山(今江西南昌康山),两军依湖对阵。陈友谅军人多势众,舰船高大,气势汹汹。徐达毫无惧色,身先诸将冒死闯阵,其部下将士大受鼓舞,无不以一当十,奋勇冲杀。徐达部一举击败陈友谅前锋,斩杀一千五百余人,缴获巨舰一艘,初战告捷。接着俞通海等乘风发射火炮,焚毁敌船二十余艘,烧死、溺死很多敌军。徐达在敌阵中奋力拼杀,连续酣战。大火从敌船上烧到徐达的战船上,他一面指挥士兵扑火,一面继续与陈军格斗,越战越勇,并指挥战船在敌阵中节节推进。双方在康郎山鏖战整整一天,湖水被血染成了红色,天空也被炮火硝烟遮蔽得暗淡昏黑。朱军在徐达等勇将的率领下,殊死搏战,击退陈友谅的进攻。此战,徐达首挫敌锋,壮大全军声威,为朱元璋取得决战胜利奠定了基础。当天晚上,朱元璋为防止东线张士诚利用鄱阳湖大战之机乘机入寇,命令徐达撤出战斗,回守应天。徐达走后,朱元璋指挥将帅士卒继续与陈友谅在鄱阳湖上血战,终于击毙陈友谅,全歼陈军主力,取得鄱阳湖大战的胜利。
徐达回到应天后,严格训练部队,加强东线守备力量。缉查奸细,修缮城池,张士诚无缝可钻,未敢贸然进犯。后来朱元璋称赞徐达说:“我让徐达回守应天最为放心,无论遇有什么问题,他都能妥善处理。”可见朱元璋对徐达多么信任。
鄱阳湖大战后,朱元璋还师应天,徐达等率军攻克庐州。不久,奉命再返湖广前线。徐达先后率兵相继攻取江陵、夷陵(今湖北宜昌)、湘潭州(今湖南湘潭)、辰州(今湖南沅陵)、衡州(今湖南衡阳)、宝庆(今湖南邵阳)、靖州(今湖南靖县)等地,彻底肃清陈友谅残余势力,占领湖湘地区。徐达在消灭陈友谅割据集团的战役中,身经数十战,建立了赫赫战功,为表彰徐达的功绩,朱元璋在至正二十四年正月称吴王后,任命徐达为左相国,地位在众将之上。
至正二十五年(1365)十月,徐达等奉命率马步舟师水陆并进,攻取淮东、泰州等地。大军渡过长江,一举攻克泰州海安坝(今江苏海安),进围泰州。经月余血战,终于攻克泰州,擒守将严再兴五千余人。之后,徐达又攻下通州、兴化、濠州等地。徐达在这些战斗中,师出迅捷,变化无穷,表现出卓越的指挥才能。
至正二十六年八月十二日,朱元璋任命徐达为大将军,常遇春为副将军,率军二十万讨伐张士诚。徐达用反间计制胜,使张士诚的老巢平江完全陷入孤立(参见平江之战)。次年,徐达亲率将士攻破葑门,大军一拥而上,进入平江城内。张士诚兀自率兵巷战,但其手下将士已无斗志,纷纷投降。张士诚见大势已去,纵火焚死其妻儿,闭门上吊自杀,被其部将解救,徐达将其押送应天。破城之日,徐达严格约束部下,立下军令:“掠民财者死,毁民居者死,离营二十里者死!”率军入城,纪律严明,秋毫无犯,很受百姓的欢迎。徐达论功封信国公,是此次封赏的最高爵位。
吴元年(1367)十月二十一日,徐达为征虏大将军、常遇春为副将军率师二十五万由淮入河,北取中原(参见明灭元之战)。十二月攻克济南(参见明攻山东之战),收俘元军三千八百五十五人,马四百二十九匹。在北伐军的节节胜利声中,朱元璋于翌年正月在应天登基称帝,建国号为大明,建元洪武。徐达被封为中书右丞相、兼太子少傅。
元顺帝逃至上都,仍然保持着一套政府机构,军事上仍然具有一定实力。洪武二年(1369)二月,徐达统帅大军攻取山西(参见明攻山西之战)、秦陇(参见明攻甘陕之战)。徐达在扫平山右、出师秦陇的整个作战过程中,抓住扩廓帖木儿北出雁门关,进攻北平之机,乘虚直捣太原,倾覆扩廓的巢穴,使其进退失据,一举平定山西。抓住陕西元军李思齐、张思道遥巡观望,不敢主动出击的时机,直入奉元,进逼临洮,围困庆阳,似摧枯拉朽,风卷残荷,降李思齐,斩张思道,威震关陇。徐达用兵出奇无穷,料敌制胜,表现出过人的胆略和指挥才能。
徐达出师秦陇,平定关陇后,明朝北方版图已达今河南北、山西、陕西、宁夏、甘肃一线。但扩廓帖木儿仍驻扎在沈儿峪(今甘肃定西西北),火儿忽答驻扎云州(今河北赤城北云州镇),纳哈出驻屯金山,失喇罕驻军西凉州(今甘肃武威)。扩廓帖木儿在西北活动猖獗,趁徐达平定关陇之师凯旋京师,大举围攻兰州。洪武三年(1370)春,徐达征尘未洗,又受命为征虏大将军,率李文忠、冯胜、邓愈、汤和等分兵两路,扫荡侵扰北方的元朝残余力量(参见明太祖第一次北征沙漠之战)。徐达从潼关向西进军,出西路捣定西,进攻扩廓。徐达此次率军北征,取得较大胜利,逼使元朝残余势力向应昌、定西一线北撤。从此,明朝北边的防御趋于稳定。
同年十一月,徐达等班师回朝,朱元璋亲自到龙江迎接北伐将士。随后,大封功臣,徐达因功授开国辅运推诚宣力武臣,特进光禄大夫、左柱国、太傅、中书右丞相参军国事,封魏国公,岁禄五千石,子孙世袭。
为了进一步打击残余元军,洪武五年(1372)正月,徐达再次以征虏大将军的身份率军北征(参见明太祖第二次北征沙漠之战)。这是一次大规模的军事行动,分兵三路,“肃清沙漠”(指对蒙古用兵)。徐达从雁门关出塞,直趋和林,作为中路军。三月,徐达师抵山西边境,派蓝玉为先锋,出雁门关向北挺进。蓝玉在野马川击败扩廓部流动部队,徐达率军至土剌河(今蒙古人民共和国境内土拉河),再败扩廓军。扩廓败逃后,与贺宗哲合为一军,在岭北布下阵势阻击徐达部队。扩廓、贺联军拼死进攻,明军受挫,死伤数万人。徐达处变不惊,收缩战线,坚守营垒,才免遭大败。然后,徐达整军而还,敛兵守塞。扩廓军队见此未敢贸然追击。
由于蒙古军事力量一时难以消灭,明朝对北方的战略从以攻为主转为以防御为主。从此,徐达长期在北平、山西一带练兵备边,镇守北平十余年。
徐达在镇守北平期间,先后三次迁徙山西农民到北平屯田种地,以加强北平的防御力量。徐达将他们分散到长城沿线各卫所,按其户籍服役课税。属籍军户的,发给衣服、食粮,使应军差;属籍民户的,分给田地、牛、种子,使纳租税。前后移民三万五千多户,十九万余人,建立屯田点二百五十余个,垦田一千三百多顷。徐达的这些措施大大减轻了北方军队的粮饷供应问题,使明朝北部边疆日趋稳定。同时,徐达严格训练士卒,缮治城池,加强守备,谨严烽燧,时时防备蒙古军队的侵扰。徐达被视为塞上长城。明朝建国后,随着文臣地位的提高,过去立下汗马功劳的武臣逐渐受冷遇,但是徐达始终受到朱元璋的重用,捍御着明朝北方的安全。
长期的戎马生涯,奔波劳累,使徐达的身体逐渐支撑不住,终于积劳成疾,一病不起。洪武十七年(1384)闰十月,徐达在北平病重,朱元璋遣使召还应天。翌年二月二十日病逝于应天府邸,时年五十四岁。追封中山王,谥武宁。赐葬钟山,配享太庙,名列功臣第一。
关于徐达的死因,有些史书记载:“(徐)达病疽,甫痊,赐蒸鹅,流涕食之而卒。”这些材料虽不完全可靠,但也不是望风捕影,随意捏造的。朱元璋当了皇帝以后,为了确保朱明皇朝“万世一系”,便想方设法加强皇权,凡是他认为有碍于独裁统治的人,不管是勋臣宿将,一律翦除。胡、蓝党狱,把功臣旧将几乎一网打尽。前一年又将南征北战、立下大功的义子亲甥李文忠暗中毒死。徐达虽为开国功臣第一,立下盖世大功,而且一直忠贞不二,但想到他的震主之威,朱元璋“赐蒸鹅”一事也就可能并非子虚乌有了。