朱元璋决定趁热打铁,认为“肃清沙漠,在此一举”。洪武二十年(公元1387年)朱元璋以蓝玉为征虏大将军(主帅),发动规模浩大的第六次北征。当时元昭宗已经病逝,他的弟弟(也有说是儿子)继位为帝,是为天元帝。天元帝觉得明军前不久才与纳哈出作战,粮草匮乏,不会深入北方再战,因此没有作迎敌的准备,只是将自己的老营远远迁到捕鱼儿海(今贝尔湖)之畔,每天吃好喝好,想等明军师老兵疲后主动退兵。应该说天元帝想得很好,但他忘了他的对手是蓝玉,洪武五年蓝玉曾经败于王保保之手,他做梦都想打败王保保来证明自己,虽然现在王保保已死,但蓝玉不会放弃复仇的机会,他将用北元的灭亡来证明自己的军事才能,证明他蓝玉才是如今最优秀的将领。洪武二十一年(公元1388年)四月风尘仆仆的蓝玉赶到捕鱼儿海,元军的松懈出乎他的意料,蓝玉没有多想立即对北元发起猛烈进攻,突如其来的袭击打得天元帝措手不及,除了他与长子天保奴等几十人逃脱以外,剩下的人马全部被明军俘虏,这一次北元将老底全丢光了,复兴大业再无从谈起。
天元帝逃脱以后也只是多活了几个月,他和其子天保奴在逃亡过程中被其部将(忽必烈的弟弟阿里不哥的后裔)缢杀,其部将自立为蒙古大汗,成为自忽必烈以来首位非忽必烈后裔的蒙古大汗。天元帝死后蒙古大汗不再有庙号、谥号、年号,可以说捕鱼儿海一战北元政府彻底崩溃。在此之前,北元的统治者一直以正统王朝自居,相信有朝一日能重新入主中原,而在此之后蒙古的统治者完全去除了身上的汉化痕迹,显示出他们已经彻底放弃了对中原地区主权的占有。明朝与北元经过二十余年的反复拉锯战,朱元璋终于取得了他想要的胜利,在这以后明朝与蒙古的作战再也不是新政权与前政权之间争夺合法性的战争,而降级为统一王朝应对北方游牧民族攻扰的反击。况且经过蓝玉一战,蒙古元气大伤,就连扰边都是心有余而力不足了。然而朱元璋北征的脚步并没有停止,并且北征的意义也开始发生变化。