公元1368年,朱元璋称帝,建国号大明,定都应天(今南京)。同年十月,明军攻破元大都,元顺帝北逃,元朝在中原的统治随即宣告结束。此后朱元璋于公元1370年、1372年、1380年、1381年多次讨伐北元残余势力并成功将其重创,其中捕鱼儿海(今中蒙交界处贝尔湖)之战后,北元基本上已经可以认为名存实亡。
公元1387年,朱元璋发动了讨伐北元的决定性战役——捕鱼儿海之战。在此之前,明朝虽然屡次讨伐北元,尽管胜多败少,但始终难以彻底瓦解北元势力。之所以会造成这样的局面,究其原因是元顺帝撤出大都后,迫于明朝强大的军事压力,元军无法正面抗衡,于是蒙古人重新恢复了游牧民族对抗中原王朝的传统作战方式。蒙古骑兵通常小规模偷袭明朝边陲,明军出击后又立即远遁,这种“敌进我退、敌退我进”的游击袭扰战术常常令远道而来的明军部队感到抓狂。
然而这一次北伐却与以往不同,明军以犁庭扫穴之势深入蒙古高原腹地,对北元势力实行了彻底清除。该年年初,朱元璋命大将冯胜统率二十万大军出兵辽东,成功逼降了盘踞在辽东并且在明元之间首鼠两端的纳哈出势力。(纳哈出,元朝大臣,官至太尉,成吉思汗四杰之一木华黎的后裔,虽然其名义上归属元朝,但屡次向明朝示好,并于元朝灭亡之际按兵不动,作壁上观。)逼降纳哈出,拿下辽东就保障了北伐明军的侧翼安全,这是明军可以放开手脚横扫漠北的主要原因。
辽东平定之后,朱元璋命大将蓝玉统领十万明军向北深入大漠,决心彻底荡平北元残余势力。茫茫漠北,远离中原,明军孤军深入、粮草不济,后勤供应十分困难,加上蒙元在退出中原之后,恢复了游牧本性而居无定所,因此战争的关键就成了如何在广阔的漠北找到元军主力。与此同时,北元王朝也同样深知明军的短板,他们料定明军大规模奔袭漠北,后勤补给困难,必然不会持久,因此只要避而不战,明军就会不战自退。不过凡事都有例外,而这一次蒙古人的计划落了空。
蓝玉最终还是找到了他们,在距离捕鱼儿海(今内蒙古呼伦贝尔市贝尔湖)东北方向八十里的地方,明军发现了蒙元主力。蓝玉立即命令将领王弼为先锋向蒙古人的营地挺进,在黄沙漫天之中,明军以雷霆万钧之势向北元营地发起全面进攻。元军上下毫无防备,蒙古大将蛮子试图组织部队反击,但很快就被明军斩杀,元军瞬间丧失抵抗能力,或逃或降。一片混乱之中,蒙元皇帝脱古思帖木儿(元顺帝之子)只带几十人逃出重围,捕鱼儿海之战,明军大获全胜。
此战消灭了北元的主力大军,俘获北元皇帝次子地保奴并王公贵族三千余人,俘虏元军士兵七万多人、牛羊无数。脱古思帖木儿逃至土剌河,被将领也速迭儿杀死,也速迭儿杀死脱古思帖木儿后,自立为汗,称卓里克图汗。也速迭儿不久也死去,他的部将鬼力赤又篡夺了汗位,废除了元的国号,改称鞑靼,北元彻底终结。