在1367年十月,朱元璋下達了北伐的命令,出師前,宋濂代朱元璋擬了《討元檄文》檄文在北方漢人中激起了廣泛的響應,檄文中提出的恢複漢人統治地位、禮義治國、驅暴安民順應了當時的民心。另外,對異族,提出都是同生於天地之間的人,當同樣對待,這是進步的觀念。在出師前,朱元璋再次嚴明了軍紀,勿妄殺人,勿奪民財,勿毀民居,勿廢民居,勿殺耕牛,勿掠人女。對於北伐的具體步驟,將帥中有兩種意見,常遇春認為我方兵強,元兵較弱,應以優勢兵力直搗大都,然後分兵掃蕩中原,北方即可定也;而朱元璋則堅持一貫的穩健原則,不打元握之仗,認為直攻大都危險係數太高。大都邊防嚴密,倘若急切之間定會難以攻下,主力困於大都,敵兵援軍到來,則裏外受敵,必敗無疑。主張步步推進,先取山東,再下河南,使大都失去屏障;然後攻占潼關,堵上元軍西退的大門,再引師取大都,就如甕中捉鱉,穩取大都;然後揮師西進,收回了關隴,廓清北方。
1367年十月二十一日,朱元璋在應天祭告天地,發師北伐。北伐軍的主帥是徐達,常遇春為副將,北伐軍完全按照朱元璋的計劃進軍。1367年十二月,徐達和常遇春首先攻下山東名城濟南,三個月內,平定了山東。其後,分兵兩路進以河南,鄧鄧愈從南進軍,徐達和常遇春由東挺進,兩軍包圍汴梁,1368年四月,汴梁不戰而降。接著進擊洛陽,在洛陽擊敗擴廓帖木兒。洛陽既降,河南已平。五月十三日,另有一軍由馮勝率領,攻克潼關,李思齊和張良弼敗走。至此,大都已經完全失去了憑仗,成了一座孤城。在這一年的八月,徐達和常遇春大軍越過黃河,沿運河水陸並進,元順帝在明軍到達之前,倉皇逃奔上都。九月二十日,徐達率軍順利進入大都,朱元璋接到捷報之後改大都為北平。在稍事休整之後,徐達和常遇春領軍西進,在1369年秋,占領了晉陝兩地。其後,在關隴一帶降了李思齊,殺了張良弼,關隴盡為所有。而與元軍主力皇家嫡係軍和擴廓帖木兒一軍則數次相戰,互有勝負。後來元軍主力退居外蒙,長期成為明王國北疆的威脅,幾十年後的土木堡之役,幾乎毀了明朝的基業。元順帝在1370年死於北漠,太子愛猷識理達臘繼位,元朝皇第又在外蒙給係多年。至此,中國基本統一,華夏從此易主。