元朝末年蒙古統治者殘暴,人民受到空前壓迫。公元1351年,元廷征調農民和兵士十幾萬人治理黃河水患。“治河”和“變鈔”導致紅巾軍起義爆發。朱元璋收到兒時夥伴湯和的來信,邀請他參加郭子興的義軍。於是朱元璋毅然投入起義軍的隊伍中。後朱元璋南征北戰終於平定南方,公元1368年朱元璋稱帝,國號為大明。
於是乎,朱元璋將目光放到了北方。公元1367年11月,朱元璋命徐達為征虜大將軍,常遇春為副將軍,率領25萬大軍進行北伐。在北伐檄文中提出“驅逐胡虜,恢復中華,立綱陳紀,救濟斯民”的口號。元順帝此時信任喇嘛僧,沈迷於天魔舞與聲色歡娛之中。
十壹月初,徐達軍至下邳,命張興祖率壹部軍先由徐州北上,攻取濟寧和東平。這時,王宣、王信父子降而復叛,並往莒州募兵,企圖阻止張興祖北上。徐達立即進兵沂州,王宣被殺,王信逃往山西。附近嶧州、曹州、海州、沭陽、日照、贛榆、沂水等地元軍聞風而降。徐達在沂州稍事停留,命韓政扼守黃河,自率大軍進攻益都。十壹月底,元益都守將普顏不花力戰不敵,遂克益都。徐達乘勝攻取壽光、臨淄、昌樂、高苑等地。元樂安、長山、新城等地皆相繼歸附。
十二月初,張興祖至東平,逼走元將馮德,追至東阿,安山,迫使元將陳璧、杜天佑、蔣興等各率所部歸降,進而圍攻濟寧,元守將陳秉直接逃走。十二月上旬,徐達帶領士兵至濟南,元將多爾濟投降,密州、蒲臺、鄒平的元將,亦先後請降。徐達決定繼續向東略地,命傅友德進攻萊陽,自己帶兵返回益都,東攻登、萊二州。元惠宗見山東形勢危急,命中書右丞相伊蘇、太尉知院托和齊、中書平章政事呼琳岱、陜西行省左丞相圖嚕等進軍山東,然而諸將都不聽從命令。
公元1368年三月,徐達在基本上占領山東之後,從濟寧進攻汴梁,同時派壹部分軍隊經河南永城、歸德趨許昌,並命鄧愈率襄陽、安陸、江陵之兵北攻河南南陽,策應北征主力作戰。三月底,徐達進抵陳橋,元汴梁守將李克彜夜驅軍民西遁,元將左君弼率所部投降。徐達進入汴梁後,立即率步騎經中灣西攻洛陽。
四月上旬,徐達軍自虎牢關進至洛陽塔兒灣,元將托音率5萬元軍在洛水以北列陣,被常遇春強行突破,退至陜州。駐守洛陽的元梁王阿哩袞見大勢已去,率官民出降。徐達繼續揮兵略取嵩、陜、陳、汝諸州,並命馮國勝率所部進攻潼關。由汴梁退守潼關的元將李思齊和張思道,聽說明軍又逼近潼關,急忙率領部隊西逃。明軍向西連續攻克隴、秦、鞏昌、蘭州等地,進逼臨洮,李思齊末路窮途,只好投降。徐達命薛顯進攻西寧,親率主力進攻慶陽。
五月初,連續攻下安定、會州、靖寧、隆德,經蕭關前往平涼,壹方面分兵進駐戰略要地延安及涇州,另壹方面派張渙率騎兵偵察慶陽的動靜。張思道早在明軍攻克臨洮時,便留下弟弟張良臣與部將姚軍守慶陽,自己則逃往寧夏,結果被庫庫擒獲。張渙派人招降張良臣,張良臣得知其兄被庫庫治罪,決定降明,但迅即又叛。徐達下令四面包圍慶陽城,張良臣恃險頑抗,並向塞外的庫庫求救。庫庫為救慶陽,兵分三路牽制明軍,壹路攻大同欲下太原,壹路攻風翔,壹路攻涇州。七月中旬,庫庫部將哈南下攻原州,致使戰局為之大變。徐達見庫庫兵勢甚猛,暫取守勢,命徐禮守驛馬關、葉石真守彭原、韋正守鄶州、傅友德、薛顯守靈州,控扼各處要害。不久,哈布攻下涇州,致使徐達大軍腹背受敵,幸得馮國勝自驛馬關引兵來救,才將哈劄兒擊退。八月上旬,張良臣在慶陽糧餉已盡,外援無望,其部將開城投降。數日後,庫庫派往大同和鳳翔方面的軍隊,亦被明軍擊潰。
公元1368年七月二十七日,徐達攻克通州。八月二日,包圍大都,然而大都無人守衛。元朝亡。
元朝滅亡後,蒙古殘軍仍然在不斷進攻,而元大將王保保擁兵十萬,坐守山西太原,是明朝的最大勁敵。徐達率軍進入山西,很快先取了澤州、潞州,先行站穩腳跟。王保保卻急於與除達壹決雌雄。由太原北去,向大都的方向,欲與徐達決戰。
徐達接報,依劉伯溫定的計謀,並不回師救大都,反而決定徑取太原。王保保聽說太原告急,慌忙回師救援,率數萬騎兵馳回,在太原城下紮營,邀徐達決戰。
徐達按兵不動,先消磨元兵銳氣,在晚上突出奇兵,夜襲王保保軍營。徐達身先士卒,騎著降服的烏騅馬,黑夜中猶如天降神兵,所向披糜,王保保未及披甲出戰,便被敗兵護著逃跑了。 ·
王保保逃到大同,由大同移軍定西,在公元1369年冬,率軍圍攻明軍於蘭州。徐達率主力趕到,在定西以北對壘。這次徐達決定與王保保決戰,雙方交鋒之下,徐達全殲王保保軍八萬多人,王保保僅帶了妻兒親兵數人,逃去元人的發源地上都,保元順帝的太子去了。
公元1369年二月,徐達揮師西渡黃河。大軍進抵鹿臺,元將張思道聞風而逃。徐達連克奉元、秦州、伏羌、寧遠、鞏昌,派大將馮勝進逼臨洮,元將李思齊不戰而降。又分兵攻克蘭州、平涼,張思道逃奔寧夏。不久,慶陽斷糧,張良臣的部將打開城迎降,徐達率車沖入城中,擒斬張良臣父子。慶陽之戰,標誌著徐達徹底平定陜西。
公元1370年正月,徐達受命為征虜大將軍,兵分兩路。李文忠率東路軍出居庸關,北追元惠宗;徐達與馮國勝、鄧愈、湯和率西路軍出潼關,往安定西擊庫庫。在出征前,朱元璋又命華雲龍、金朝興、汪興祖等先期進攻雲州,以吸引敵人註意力,並策應徐達、李文忠作戰。二月,華雲龍攻破雲州,金朝興攻克東勝州,汪興祖攻克武州、朔州。
徐達率西路軍出征。四月,進抵安定。元將庫庫正圍攻蘭州,知道徐達軍隊已至,遂撤圍轉赴安定迎戰,庫庫屯軍於安定以北的車道硯,徐達命馮國勝率軍趨沈兒峪列陣,雙方激戰壹日,未分勝負。庫庫於是派千余人由間道潛劫明軍大營,使明軍陷於混亂。徐達親自迎戰,將來敵擊潰。次日,徐達整軍出戰,大敗元軍,庫庫僅率數名隨從北奔和林。庫庫兵敗後,徐達命湯和進軍寧夏,鄧愈西攻河州,自己則向南攻取沔州、興元等地。
李文忠的東路軍於二月出居庸關後,經野狐嶺至興和,迫降當地元軍守將,繼而經駱駝山,進攻察罕諾爾,擒獲元將珠孟和沙達哈等。五月,元惠宗死,李文忠兼程趕到應昌,擒獲元惠宗嫡子買的裏八剌及諸王將相數百人。元惠宗的另壹個兒子愛猷識禮達臘,率數十騎逃走。李文忠在回師途中,又攻破興州,擒獲元將江文青,俘降元軍37000人。大軍奏凱而還,朱元璋親迎於龍江,犒賞三軍,並下詔大封功臣,授徐達開國輔運推誠宣力武臣特進光祿大夫、右柱國、太傅、中書右丞相、參軍國事、改封魏國公、歲祿五千石、賜世襲文券。
公元1371年正月,愛猷識禮達臘與庫庫聚集在和林,借塞外地域遼闊之勢,休養生息,準備卷土重來。鑒於此,徐達受命赴北平訓練士卒,修繕城池,又遷沙漠遺民32000戶屯田北平,以加強防禦。七月,徐達奉命轉赴山西練兵。此時,元丞相伊蘇,元將高家奴、哈剌章、納哈出等分別占據遼東之開元、遼陽、沈陽、金山等地,伺機南下。
公元1372年重新發兵征擴廓。徐達作為征虜大將軍進取中路,左副將軍李文忠從東路進攻,征西將軍馮勝從西路進攻,各率領五萬騎奇兵出塞。徐達中路輕敵冒進,初戰不利,傷亡數萬人。朱元璋因為徐達功勞大,並不過問。文忠軍亦不利,不久撤軍。只有馮勝統軍獲全勝。公元1373年,徐達又率領諸將遠征邊疆,勝利後還軍北平,戍守邊防,過了三年才回到京城。