朱元璋起兵消滅陳友諒和張士誠後,從1367年10月開始,朱元璋就開始統一的步伐,從南京出發北伐元朝。第一次北伐的主將是徐達和常遇春,共領兵25萬。3個月後佔領山東全境。然後西進河南,在河南遇到元軍主力阿魯溫。雙方在洛水大戰,殲敵5萬,阿魯溫被俘。繼而攻克潼關、華州。1368年5月,朱元璋親自誓師汴梁,議取元大都。7月徐達佔領大都周圍,元順帝棄城而逃。8月2日,明軍佔領大都。
真正的大戰還在後頭。名將王保保率領10餘萬元軍在山西,納哈出20餘萬大軍在遼東,雲南還有10幾萬元軍。12月,徐達率領明朝騎兵5萬餘人與王保保交鋒於太原城下,王保保棄師而逃。明軍殲滅元軍4萬餘人,常遇春一路北追到欣州,王保保10餘萬大軍全軍覆沒。次年徐達西進陝西,元將李思齊投降。1369年6月,常遇春李文忠領8萬步兵,1萬騎兵繼續進攻上都。連克錦州、大興州等等,直逼上都,元順帝逃跑,俘虜元朝丞相脫火赤。
不幸的是常遇春在回師途中病故,李文忠升任主帥。與此同時,徐達繼續向西攻擊甘肅。攻克蘭州。王保保重新集結了10餘萬大軍圍攻蘭州。1370年3月,朱元璋派出4路大軍,徐達、馮勝、鄧愈、湯和共計40萬大軍進攻定西。4月王保保大敗,殲敵84000人。5月,李文忠出居庸關,攻克應昌,元朝皇室成員全部被俘,只有元順帝的兒子逃到了和林(烏蘭巴托),與王保保重新彙集。1372年,徐達、李文忠、馮勝各領兵5萬,分東中西三路進軍和林。不過中路徐達輕敵冒進,損失較大,東路李文忠也因糧草不濟退兵。西路馮勝的副將傅友德卻7戰7勝,大舉掃蕩漠北。
這一次是朱元璋前期北伐的終點,雙方在北方戰場進入僵持階段。1377年朱元璋派大將鄧愈西征吐蕃,鄧愈勢如破竹,連戰連勝,追敵直至崑崙山,殲敵數萬人,降服數國,為明朝拓地千里。1379年。大將沐英、傅友德統兵15萬進軍雲南,元朝殘餘勢力負隅頑抗。至1385年,共殲敵20餘萬,雲南平定。1387年北路戰事又起,朱元璋派大將馮勝、傅友德、藍玉共領兵20萬進攻遼東。連戰連勝,5月元太尉納哈出率元兵20萬投降明朝。1388年藍玉領兵15萬遠征漠北,在捕魚兒海(貝加爾湖)大破元軍10餘萬,王公貴族全部被俘。元朝正式宣告滅亡。這一戰還繳獲了流傳千餘年的傳國玉璽。