明朝建立后,虽然徐达攻占大都,元顺帝带领文武百官逃向草原,建立北元政权。蒙古各部落依然效忠于元帝,不断对明朝边境进行侵袭,企图再度侵占中原。这种情况下,明太祖朱元璋不断派出各路大军,对盘踞在草原的蒙古人进行打击,力图削弱蒙古势力,解除蒙古人对中原的威胁。
洪武二十年九月,朱元璋任命蓝玉为大将军,唐胜宗、郭英为左、右副将军,率兵十五万出塞,以“肃清沙漠,在此一举”为目的,彻底消灭北元朝廷。
因为草原上地广人稀,游牧部落的居无定所,中原军队进入草原,最怕的就是找不到敌人,来无影去无踪的草原骑兵,十分令人头疼。基于这个原因,作战经验丰富的蓝玉等人在并没有接受命令时,就迅速带兵出击草原。而是派出大量游骑,搜寻北元朝廷的位置,终于在洪武二十一年三月,探悉北元小朝廷游牧到喀尔喀河、贝尔湖、克鲁伦河一带。于是蓝玉抓住战机,从大宁带兵出击,迅速将目标锁定在“捕鱼儿海”。
明军将士一路“人不卸甲、马不离鞍”,在大漠草原上,连续行军一个多月,进入大漠深处。甚至因为找不到水源,全军面临崩溃的危险,所幸前期归降的蒙古军官长期在塞外生活,经验丰富,帮助找到水源,解决了明军的危机。到四月十一日的时候,明军风尘仆仆地赶到了距离捕鱼儿海四十余里的地方。突然失去了元军的踪迹,失去了继续搜寻的线索,蓝玉一度认为北元军队跑了,有了撤军的打算。但他很快与部下商议后,本着绝不走空的信念,已经到这了,总得有点收获吧,于是下令全军偃旗息鼓,挖洞煮饭,避免炊烟被敌军看到,给跑了。
就这样明军一路搜索前进,赶到捕鱼儿海南岸的时候,还是没有找到北元朝廷的踪迹。此时蓝玉等人都绝望了,本着死马当作活马医的想法,继续派出侦察兵搜寻敌军的下落。这一查还了得,立马发现了大鱼,发现北元小朝廷在东北方向八十余里之外。蓝玉果断派出求战心切的定远侯王弼,率领前锋军队“衔枚卷甲”,直扑其营,咬住北元军队,别让他们给跑了。自己率领明军主力,随后掩杀过去,力图一举击溃元军。
一开打,蓝玉就发现自己想多了,北元朝廷一丝丝防备都没有。可能已经知道明军要追过来,所有人都在收拾东西,准备装车转移。元主脱古思帖木儿认为明军不熟悉大漠环境,无法这么快赶到捕鱼儿海,他们有充足的时间逃跑,结果一转脸,明军就杀到跟前了。要不说,努力的人,老天爷也会帮助你,在明军发起进攻的时候,刮起了大风,沙尘满天,白天都变得灰天暗地的,对明军起到了很好的掩护作用。明军前锋王弼带兵神不知鬼不觉地接近元军,发起突然袭击。北元军队来不及列阵迎敌,在混乱中死了数千人。
在随后的主力对决中,北元的主力更是不堪一击,被明军几乎全歼,逃脱者寥寥无几。北元直属的中央禁卫军中的太尉蛮子和太师哈剌章,率北元主力拼死抵抗,蛮子被郭英一刀阵斩,所部被全歼,哈剌章的大营不久也被蓝玉领兵攻破,部属尽数被俘,哈剌章本人下落不明。在元末,给明军造成巨大麻烦的王保保部,在他弟弟脱因帖木儿的带领下,这场战役中,也被全歼,脱因帖木儿本人在逃跑过程中,坠落马下,被明军俘获。
此战北元朝廷被一网打尽,只有脱古思帖木儿、太子天保奴以及少数随从乘乱逃出了明军的包围圈。明军出动精骑追击千余里,明军将领余通渊所部一直追到了克鲁沦河,终因他们逃得太快,追不上,才撤退回来。
经此一战,明军歼灭北元主力将近十万人,俘虏北元皇室、百官等达七万余人,一举摧毁了北元政权。而明军自己的损失却微乎其微,据说是“不费寸兵,以收其效”,这里面肯定有夸张的成分,预计损失在几千人左右。捕鱼儿海之战后,北元朝廷彻底消失,蒙古各部再度回到了四分五裂各自为战的时代。此后蒙古草原虽然不时有强大一时的英雄人物出现,但都难以真正实现蒙古的统一,再也无法对大明王朝构成毁灭性的威胁。
此战堪称大明版本的封狼居胥,朱元璋得知获胜的消息后,将蓝玉比作卫青、李靖。这比喻明显夸张了,蓝玉的个人作风更加张扬和跋扈,不及卫青和李靖的低调、谨慎。这一战,是蓝玉人生最辉煌的时刻,也是他人生的顶峰,其实以蓝玉的能力,他或许有机会创造更加辉煌的战绩,比如朱棣对阿鲁台部的征伐,要是换成蓝玉,恐怕没有那么费劲,一战连阿鲁台都脑袋都拿回来了。但是由于他自己飞扬跋扈的性格,捕鱼儿海之战,虽然他战功很高,但是私自处理战俘的做法,令朱元璋很不满,原计划封爵的楚国公,也变成了凉国公。以及洪武二十五年,太子朱标的去世,蓝玉的人生也走到了尽头。