洪武五年(1372年),明太祖朱元璋决定北伐北元,他任命了徐达、李文忠和冯胜为主帅,各自带领五万明军分三路出征,目标直指北元的巢穴和林(即今乌兰巴托一带)。和林作为元朝曾经的岭北行省,且战斗的主战场均在该省辖地内,因此这场战斗被称为岭北之战。朱元璋最初设想三路大军会势如破竹,一举扫清北元的残余力量,从而实现自己在永清大漠的战略布局。然而,北元第一名将王保保的反击却出乎意料地强烈。他被誉为“奇男子”,在和林展开绝地反攻,大败徐达的军队,这也是徐达军事生涯中的最大败绩。明军因此被迫退却,李文忠所部也未能取得实质性进展。唯一稍显亮眼的是冯胜所部,特别是在冯胜的副将傅友德超常的表现下,打出了河西七战七捷,帮助大明在这一战役中保住了一些颜面。
岭北之战的失利,迫使朱元璋重新审视北元的整体实力,尤其是明军的伤亡情况令人堪忧,战马的损失尤为严重。在蒙古草原上作战,战马无疑是至关重要的战略资源,而明军本就缺乏足够的战马,这一战几乎消耗了所有的骑兵。傅友德虽有卓越表现,但因战马不足,未能进一步扩大战果。尽管朱元璋心有余力,想继续进攻,但实际上大明的兵力和物资已然捉襟见肘。北元方面,尽管幸运地在岭北之战中获胜,但他们深知与大明的综合国力差距,尤其是王保保的去世后,北元军中顶尖人才的相继逝世,使得北元的战斗力逐渐衰退。因此,尽管胜利,北元已无力再向南进攻大明。两国陷入了停战期,各自调整、积蓄力量,等待下次对决。
在这一时期,朱元璋决定停止正北方向的大规模进攻,而是着手在长城沿线修筑军事重镇,加强防御工事,以抵挡北元骑兵的机动性。同时,他把目光投向了西北,重点修筑河西走廊防线,切断北元与西域的联系,削弱其战略支援。西南方向,明军则消灭了盘踞在云贵高原上的北元梁王部,彻底消除了北元在大明侧后的威胁。到了洪武五年,北元控制的区域仅剩下蒙古草原和辽东,而蒙古草原由于生产力的局限,无法为北元提供充足的补给,因此辽东地区的控制变得至关重要。北元凭借辽东的资源,维持了与大明的长期对抗,同时也控制了朝鲜半岛的高丽政权。
辽东的战略地位逐渐显现出来。此时,元太尉纳哈出带领数十万北元大军驻守辽东,成为大明在东北最严重的边患。朱元璋本已打算解决辽东问题,但因大明建国初期事务繁杂,一时间未能顾及此事。直到洪武二十年(1387年),朱元璋才终于腾出手来处理辽东问题。此时,徐达、常遇春、李文忠等名将已相继去世,朱元璋便任命了当时最有声望、最能打的冯胜为征虏大将军,傅友德、蓝玉为副将军,率领20万明军征讨辽东。同时,为了培养新的军事人才,朱元璋让常遇春之子常茂、李文忠之子李景隆、邓愈之子邓镇等参与战斗,以锻炼他们的实战经验。
20万明军浩浩荡荡杀向辽东,北元的辽东驻军节节败退,明军长驱直入,直逼纳哈出的巢穴——金山。面对明军的强大攻势,纳哈出已然心生退意,士气大幅下降,最终决定投降。冯胜巧妙地派遣朱元璋的诏书通过纳哈出的部将乃剌吾送达,劝说纳哈出投降。在进退两难之际,纳哈出明智地选择了投降,随后他率领20万部众归附大明。朱元璋大为欣喜,将其西迁并安置在长城外,设置了朵颜、泰宁和福余三卫作为明朝的外屏障。同时,大量汉人被迁往辽东从事屯垦,完成了自安史之乱以来600多年后,汉族军旗重新插上辽东的壮丽画卷。从此,大明以辽东为基地,展开了对东北的统治,直至两百余年。
顺便提一句,在冯胜征辽时,北元的附属国高丽也派遣了一支4万人的军队协助北元作战。然而,当高丽的指挥官亲眼目睹了明军的强大战斗力后,他迅速意识到只有跟随大明才是正确的选择。尽管高丽国内仍有守旧势力坚持认北元为“大哥”,但这位指挥官最终还是选择反叛,他带领4万大军攻破高丽王城,完成了半岛版的“黄袍加身”。他随后主动向大明称臣纳贡,朱元璋对此十分满意,并为他重新赋予国号“朝鲜”。这位新朝的建立者,便是李成桂,他由此成为李氏朝鲜的创立者。