尽管
明太祖第一次北征已经将东北一方的
孛儿只斤·爱猷识理答腊爱犹识理达腊和西北陕甘一方的
王保保赶到北元首都和林以北地区,但北元兵力未受致命打击,两年内又开始南侵,骚扰明朝的北部各边塞。明太祖本来倾向于依长城防守为主,但经徐达上奏后采纳了徐达的主攻意见,于洪武五年正月二十二日出击北元首都和林。
朱元璋的作战策略是分三路各5万人,以中路为正,东、西两路为奇,奇正并用,三路合击。中路以
徐达为征虏大将军出
雁门关,说是急攻和林,但实际上却缓慢进军,诱使北元军南下作战以便歼灭;东路
李文忠李文忠为左副将军出居庸关,经应昌府攻和林,让
北元出乎意料,并可在北元军南下攻中路军时包抄其后方;西路
冯胜冯胜为右副将军出金兰攻打
甘肃省一带,作为疑兵诱使北元军分散兵力。
徐达的中路军于二月二十九日进入
山西省境内,其先锋
都督事
蓝玉出雁门关在野马川(胪朐河,即今位于今中蒙边境的
克鲁伦河)击败
王保保并一路追击。三月二十日,蓝玉又于土剌河(即今
土拉河,位于蒙古
乌兰巴托西)再败扩廓帖木儿。但是这样一来,明中路军孤军深入,没有按照原作战策略行事。五月初六,北元扩廓帖木儿和贺宗哲的联军在岭北击败
徐达的中路军主力,明军死万余人,被迫南逃。七月十一日,
偏将军汤和又在断头山(今宁夏宁朔东北约300里处)被北元军击败,指挥同知
章存道战死。中路军的两路均败。
中国工农红军西路军则比较顺利,川侯
傅友德的5000骑兵于
武威郡(今
甘肃省武威)击败
北元失剌罕,又在
永昌县(今属甘肃)忽剌罕口再败北元
太尉朵儿只巴。然后傅友德和
冯胜的西路军主力部队会师,于扫林山(今
酒泉市北)大败北元军,斩首400余级,俘虏北元太尉锁纳儿加、平章管着等人。六月初三日,北元将领上都率以830余户投降西路军。西路军攻到亦集乃路(今
内蒙古自治区额济纳旗东南),北元守将
伯颜帖木儿也举城投降。西路军在别笃山口大败北元岐王朵儿只班,俘虏北元平章长加奴等27人及牲畜十余万头。
傅友德追击到
瓜州县(今甘肃安西)、
敦煌市(今甘肃敦煌西北),再次大胜,俘获岐王的金银大印和牲畜2万头,然后胜利班师。
东路
李文忠一军于六月二十九日攻到口温(今内蒙古查干诺尔南),
北元守军闻讯逃走,留下很多牛马重被明军俘获。李文忠留部将
韩政守辎重,率主力顺着哈剌莽来(今蒙古洪戈尔)、胪朐河追击元军,在土剌河、阿鲁浑河(即今
鄂尔浑河,位于蒙古
乌兰巴托西北)一带与元将蛮子
哈剌章激战多日。最终北元军被击败逃走,被俘北元人马以万计,但东路军死伤也很多。
李鸿章继续追击,一直追到称海(今蒙古哈腊乌斯湖南、哈腊湖西),各路北元军又会聚起来回攻东路军。
李文忠见无法取胜,就决定退兵,一路以兵法故布疑阵全身而退,
北元军队害怕明军有埋伏,不敢追击,双方脱离接触。东路军虽有一定优势,但没有完全击败所遇元军。
第二次北征中的三路明军,基本是各自为战,没能按照战前制订的策略配合,因此按所遇对手的强弱,命运各不相同。孤军深入到达北元首都和林一带的中路军和东路军都被北元拼死反击而损失很大。