元朝末年,不断的旱灾和统治阶级的残忍管治,造成底层群众为了存活而兴起反抗。这是叙述元末农民暴动的最合理的理由。农民暴动不可避免地碰触了元代统治阶级的权益,包含蒙古人的权益。为保障他们的权利,保障他们的财物,察罕帖木儿组建并主导了沈丘地区地方军队,与元末农民组成义军战斗。当时元朝没方法击败敌方,所以察罕帖木儿等人主导的地方军阀获得了元朝的器重和支持。从此,察罕帖木儿带领的部队成为元末红巾军的最大对手。成年之后,未来的王保保也参加了这支队伍,与察罕帖木儿、也是自己的养父并肩作战,逐渐成为这支队伍里面最关键的角色。
1367年10月21日,明太祖委任徐达为征虏大将军,常遇春为征虏副将军。他带领二十五万明军北伐中原。到了次年三月中旬,明朝正路军讨平山东,然后渡过黄河到河南战斗。当时,王保保在河南带着军队,因为当时王保保和元朝政府的关系并不好,他与元朝山西陕西地区的贵族地主李思齐、张思道等闹翻。鉴于这种情形,徐达亲自写信派人到王保保的部队,期望能招降王宝保,防止与元朝的常胜将军王保保爆发正面作战。
明太祖委任徐达为主要的指挥官,李文忠为右副将军,宋国公冯胜为征西军官。十五万大军分为三个工作组攻打盘踞在漠北的北元。其中,徐达带领的中路军是明朝军队北伐的主力部队,也是中路军按照方案,从雁门关启程,战略目标是占领和林,然后进一步的目标是引诱漠北的北元主力军队与之对决,从而完全击溃北元军。李文忠带领的北伐军以出奇制胜的身份,从居庸关启程,经应昌府赶赴北元朝廷所在的和林。此外,北元军在对决之中拿下与徐达的主力战斗,专责围困北元军队之后方;冯胜带领的西军以“疑兵”身份转入甘肃,驱赶北元军队。
面临明朝凶猛的三路军队,王保保汲取了以往与明军战败的经验,实行了防御奇袭的政策。确切布署如下:王保保率军队急速将徐达大军吸纳到和林,最终王保保与何贺宗哲合力击溃明军。随后,王保保的方案开始实行。他首先派遣一小股军队到野马川送行明军的先锋蓝玉(徐达的先遣部队)交战。然后北元军假装战败,北进逃走。蓝玉率师追击,在土刺河碰到了王保保。王保保率师再次逃亡最终,他带领徐达的部队到了和林,然后王保保和贺宗哲一起围攻徐达的部队。明军被杀了一万多人。徐达北伐以大败收场。徐达率师后撤时,王保保因为怕徐达,不敢追徐达。
徐达的中路军是三条线路之中跑得最快的,当然也是第一个输的。这直接造成了明军北伐的失利。徐达带领的北伐军虽然在土刺河击败了哈拉章等北元高官,但由于中路军主力之后还是被王保保击溃,北伐军最终被北元各主力部队围困,最终徐达无奈地撤退了。然而,他在后撤之中遇到了许多官兵死于饥渴。冯胜带领的西路军虽然在甘肃获得了极大获胜,但由于惧怕东察合台金帐汗国来帮助北元,冯胜带领的西路军最终退出了甘肃。总的来说,明代洪武北伐以失利收场。由于清徐达北伐的主要战役爆发在北元的和林地区,这场会战在历史上被称作“岭北会战”,这次会战的最终结果导致了元朝再丧失大都之后,在和明朝的正面冲突中保持住了自己祖先的领地,不至于一无所有。