當北伐軍以雷霆萬鈞之勢,席捲中原,各地告急的羽書,雪片似飛向大都的時候,元軍正忙於內鬨,殺聲震動大地,政局反覆和軍權轉移,交會錯綜,纏夾不清。擴廓被解除兵權後,退兵據澤州(今山西晉城),威風一倒,部將關保投向政府。順帝以為擴廓勢孤,詔李思齊等軍東出關,和貊高合軍圍攻擴廓,令關保以所部戍守太原。擴廓憤極,引軍據太原,盡殺朝廷所置官吏。順帝也急了,下詔書削擴廓在身官爵,令諸軍四面###。元璋大軍就趁這時機,下山東,取汴梁,元將望風降附,無一人抵抗,無一軍堵截,小城降,大城也降,漢官漢將棄城逃走,蒙古、色目也棄城逃走,真正是“土崩瓦解”,“勢如破竹”。
到了潼關失守,貊高、關保又為擴廓所擒殺,順帝才害怕發急,不好轉圜,末了還是把一切過錯都算是太子作的,取消撫軍院,盡復擴廓官爵,令和李思齊分道南征。兩人也才著慌,正準備調遣軍隊,整裝出發,可是太晚了,北伐軍已經向大都推進,挽救不及了。
第三步攻勢的目標才是大都。閏七月徐達大會諸將於臨清,馬步舟師沿運河直上,連下德州湧州,元軍連吃敗仗,毫無鬥志,順帝怕被俘虜,蹈徽、欽二帝和瀛國公的覆轍,二十八日夜三鼓,率后妃太子逃奔上都(開平,今察哈爾多倫縣地。編者按:即今內蒙古自治區多倫縣西北)。八月初二北伐軍進人大都,淪陷了四百三十年的名都,到這一天才算光復舊物。從宋太祖到宋神宗以來,沒有能夠實踐的民族願望,算是達到目的了,歷史的錯誤、汙點,算是湔雪了。自古以來對北方蠻族的國際線——長城,從這一天起,再度成為中華人民的自衛堡壘了。蒙古政府——成吉思汗後人君臨中國的政權,從滅金算起,有一百三十四年,從滅宋算起,有九十年,到這一天,結束了!
元大都雖下,順帝在上都依然可以發號施令,元軍實力依然強大完整。徐達、常遇春移師進取山西陝西,從洪武元年八月到第二年八月,整整一年,才完成第四步的戰果。在這一年內,元軍不但堅持抵抗,而且還有力量作幾次大規模反攻。在整個北伐戰役中,可說是最艱苦的一段。
西征軍從河北進人山西南部,擴廓遣將以兵來爭澤州,大敗西征軍,又乘北平(元璋改大都為北平府)空虛,親出雁門關偷襲。徐達得到情報,也不回救,逕率大軍直搗擴廓的根本太原。擴廓進軍才到半路,回軍援救,半夜被襲擊,不知所措,以十八騎北走,山西平。
洪武二年三月西征軍入奉元路(西安),李思齊逃奔鳳翔,又奔臨洮,大軍進逼,勢窮力竭,只好投降。元軍又乘虛攻通州,北平無重兵,常遇春、李文忠率步騎九萬還救,直搗元上都(開平),元順帝北逃沙漠,北平也轉危為安。遇春暴卒,李文忠領會合大軍併力西征,大敗圍攻大同的元軍,生擒脫列伯,殺孔興。順帝見幾次計劃,都已失敗,知道不行了,嘆一口氣,從此打消了南下反攻的想頭,定下心,重新回到他祖宗時幕天席地,跟水草轉徒的生活,中國皇帝雖然作不成了,也還是稱雄漠北的蒙古可汗。徐達大軍繼續西進,張良弼逃奔寧夏,為擴廓所執。其弟良臣以慶陽降,不久又反,城破被殺,陝西平定。
李思齊、孔興、脫列伯、張良弼兄弟,降的降,死的死,元朝大將只剩擴廓帖木兒還擁大兵駐屯寧夏,不時出兵攻掠,邊境守軍不得安逸。劉基警告元璋說:“不可輕看擴廓,此人真是將材。”洪武三年又命大將軍徐達總大兵徵沙漠,擴廓方圍蘭州,解圍回救,大敗奔和林(今外蒙古庫倫西南編者按:即今蒙古烏蘭巴托西南。)。五年,又動員大軍分道進攻,到嶺北為擴廓所大敗。廿五年後元璋想起這次失敗,還非常傷心,寫信告誡他兒子朱棡、朱棣說:“吾用兵一世,指揮諸將,未嘗敗北,致傷軍士。正欲養銳,以觀胡變。夫何諸將日請深入沙漠,不免疲兵於和林,此蓋輕信無謀,以致傷生數萬。”據同時人記載,連同過去幾次的損失,合計死亡有四十多萬人,元璋竟把責任推給諸將了。其實元璋對擴廓最不放心,曾說“如今天下一家了,尚有三事未了,掛在心頭:一件少傳國,一件王保保未擒,一件元太子無音問。”到洪武八年,擴廓死,西北的守軍才得休息,元璋和他的將軍們背地裡都嘆了一口氣。
察罕死後,擴廓繼掌兵權,元璋曾打發人去通好,七次去信,好說歹說,求通商,求助討孛羅,求兩下互不侵犯,各守封疆,送錦綺紗羅,送馬疋,弔喪,問候,全做到了,使者都被扣留,也不回信。擴廓孤軍出塞以後,家屬被俘,又使人送信去勸降,娶他妹子作第二子秦王妃,還是不理。最後