洪武元年(1368年)徐达北伐,元顺帝自知不敌,带领百官、宫妃逃往上都。这件事宣告了元朝的灭亡。这元顺帝孛儿只斤·妥懽帖睦尔的名字如果意译的话就是铁锅。也真是名副其实,他就是要为元朝灭亡背锅。元朝虽然丢掉了大都,但是仍然保有相当大的势力。元顺帝仍能控制蒙古故地、陕甘一带、辽东、云南等广大地区,拥有兵力数十万,因此元朝的残余政权仍延续了一段时间。历史上把这段时期的元朝残余政权就成为北元。明人称大元皇帝为“元君、元主”,称其国为“残元”、“故元”、“胡元”。
这个时期明朝和北元多次交手。北元还想重现百年前的光荣,而明朝则要保证自己的政权不被摧毁,双方的交锋在所难免。洪武三年(1370年)元顺帝驾崩,朱元璋便以徐达为征虏大将军大败蒙元名将王保保,俘虏了近2000名官员。此战之后,太子爱猷识理达腊率领残余势力退往和林。虽然说徐达取得了大捷,但是实际斩获并不大。就像当年李世民攻打突厥,虽然抓住了颉利可汗,可是突厥的势力还是不容小觑。基于这种现状,朱元璋对北元便采取了防守的态势。元明之间过了一段相安无事的日子。
好景不长,洪武十三年(1371年)朱元璋便派三路大军共计十五万兵马攻打北元,徐达从雁门趋和林,冯胜由金兰趋甘肃,李文忠由居庸出应昌。不过这三路大军出发后战果并不辉煌。只有冯胜的西路军胜利,中路军和东路军全部失败,整体以失败告终。洪武二十年(1378年)朱元璋又任命冯胜为大将军,率军征讨北元,收回了辽东地区,迫使北元西撤。次年,蓝玉又奉旨率军十万,追击北元残余势力,元主脱古思帖木儿西逃,后被部将所杀。元主死后,北元陷入混乱之中,《明史》中称:“部帅纷孥,五传至坤帖木儿,咸被弑,不复知帝号”。
建文三年(1401年),鬼力赤杀掉了北元最后一位君主坤帖木儿,自立为汗。《明史》记载建文四年(1402年)布里牙特·乌格齐废除北元国号,改称鞑靼,北元至此灭亡。但是蒙古人记载的史料《蒙古源流》和《黄金史纲》并没有记载过废除“大元”国号一事,也并未记载过在北元灭亡后存在“大元国”一事。根据《明实录》,景泰四年(1453年)布里牙特·额森自称“大元天圣大可汗”,年号“天元”;孛儿只斤·巴图孟克自称“大元大可汗”。关于这个问题,蔡美彪先生和曹永年先生曾作过深入探讨,认为“北元”应适用于脱古斯帖木儿败亡而止,即洪武三十年(1388年),此后大元国号已取消,仍称蒙古。