背景:公元1372年正月,朱元璋派徐达、李文忠、冯胜率三路大军,共计15万北征大漠。
中路军:徐达率领的中路军快速进军,2月29日,中路军进入山西之后,蓝玉奉命担任前锋,帅兵出雁门关抵达塞外,穿过沙漠戈壁行军两千余里到达野马川,这条野马川就是今天外蒙古国的克鲁伦河,蓝玉兵峰强劲,在克鲁伦河河畔大败北元军队,蓝玉继续沿河流西进,3月20日,蓝玉等将领在土拉河一带与北元名将阔托帖木儿遭遇,发生激战 ,帖木儿战败逃走,5月帖木儿与北元将领舍宗折联合起来,开始与徐达的中路军对峙。
由于民军的连续胜利,让军队中产生了轻敌情绪,之后明军连续作战疲惫不堪,伤者众多,死者一万余人,继续作战只会全军覆没,徐达只能及时退出要塞驻守,才使得大量的开国功勋将领得以保存英雄之躯。负责为中路军撤退殿后的汤和,在断头山遭遇北元军队,交战失利,平阳左卫指挥同知章存道战死,明军当时的处于不利处境,明军中路军全部撤出,至雁门关。
东路军:东部李文忠的东路军出了居庸关后,在这个时候徐达的东路军已经失败,开始撤退,西路军也正在班师,李文忠的东路军还在继续行进,东路军一路北上,当地驻守的元军望风而逃,李文忠命部将韩正等人保护辎重,而自己率领大军每人携带20天的口粮,轻装前往漠北腹地,北元军队开始撤退,李文忠一直追击到达斡尔,当地的元军逐渐增多,双方展开激战,李文忠的坐骑中箭,立即下马步战,副将将自己的战马让给李文忠,自己去抢夺敌军战马,李文忠与北元大军殊死战斗,最终击败北元的军队,李文忠俘获敌兵数以万计,明军乘胜追击,一直追到阿尔泰山北面。
北元大军重新聚集,一时间明军的优势转为劣势,李文忠当机立断,鸣金收兵,并故意将缴获的战马全部释放在野外,又举行庆功宴,杀牛犒劳士兵。北元将领见状怀疑附近有埋伏就慢慢退去,李文忠也率军返回,由于晚上行军走错了路,李文忠的大军差点陨落,最后找到水源东路军才得以顺利班师。
西路军:主帅冯胜和陈德、傅友德率领西路军到达兰州,傅友德先带五千骁骑直趋西凉,遇上元失剌罕的兵马,将其击败,然后追到永昌,又在忽剌罕口击败北元太尉朵儿只巴,俘获大量锱重和牛、马等牲畜。傅友德接着进军至扫林山,冯胜随后也率军到达这里,他们合兵一处,击败北元军队。
“友德手射死其平章,百花,追斩其党四百余人,降太尉锁纳儿加平章管著等”(《明太祖实录》)。
至此,北元的甘肃主将自知不敌,率领部众百姓八百三十多户投降,冯胜安抚居民,留将领驻守,然后继续挥师西进。
冯胜率领西路明军进逼亦集乃路,北元守将卜颜帖木儿投降。明军继续向西行进到达别笃山口,北元岐王朵儿只班逃走,明军一路追击,生擒北元平章长加奴等人,俘获十多万牛、马、驼、羊等牲畜。接着,傅友德继续领兵追击岐王部众,到达瓜州、沙州,击败北元军队,俘获金银财物和两万牲畜,然后带兵返回。
根据《纪事录笺证》的记载,同年十二月底,冯胜放弃了此次攻占的大部分甘肃地区。
总结:中路军势大轻敌,急攻冒进,提前进攻,没有等到东路军和西路军到来就失败,东路军不知道中路军失败出军,陷入孤军作战的境地,西路军战果丰硕,却由于其余两路军的失败,被迫弃地退回,战果付诸东流,明军不可战胜的神话破灭。
在之后北元军队趁机反攻,迅速南下,袭击沿边地带,一度到达大同,“胡兵寇大同之宣宁县下水镇,杀掠吏民而去”(《明太祖实录》)。
明军八战七捷一败,明朝的北部边防形势严峻,朱元璋不得不重新思考对北元的策略,从主动出击变为积极加强北部防御,修长城作为防线和进攻阵地,封王驻守,靠着一个个军区,蚕食北漠。
后来朱棣却没有继续这一国策,选择了五征蒙古,蒙军望风而逃,后续五次北征劳民伤财且无建树。