元顺帝应该是元朝最不顺的皇帝,先是被徐达、常遇春从大都赶到上都,又被常遇春从上都赶到应昌。元顺帝从上都到应昌后,听说常遇春在回去的路上病死了,终于松了口气,以为以后可以安定下来了,他没想到,朱元璋正盘算着再让他搬一次家。
洪武三年(1370),王保保趁明朝大军回去的时候围困兰州。这时候常遇春已经病逝,朱元璋命徐达为征虏大将军,李文忠为征虏左副将军,率领冯胜、邓愈、汤和等人分道北伐,其中徐达、邓愈等人去救兰州,李文忠直接从居庸关北上大漠,去打元顺帝刚搬的新家应昌。
王保保攻打兰州并不太顺利,他原以为兰州应该可以一鼓拿下,没想到不但没有一鼓拿下,而且守卫兰州的明将还给了他个惊喜。守卫兰州的是张温,得到王保保大军来攻的消息后,张温手下将领都觉得应该坚守城池,等朝廷的大军救援,一般将领面临这种情况,也都会这么做的,但是张温不是一般将领,他觉得应该趁王保保大军刚来,不知道兰州虚实的时候,突然袭击,必然可以挫其锐气,然后再守就比较好守了。
当晚,张温趁着夜色,率领城里的军队对王保保大军发起了突然袭击,王保保大军自以为兰州的明军肯定只会吓得缩在城里,万没料到居然有人会突然袭击,被打了个措手不及。张温突袭成功,退回兰州城,率领部下坚守城池,王保保攻了多日,硬是没攻下来。这时候徐达的大军已经北上,王保保决定不再攻兰州,而是去定西等着阻击徐达。
定西是兰州的门户,若想去兰州,必经定西。徐达大军到定西时,王保保的大军屯驻在定西的沈儿峪(今甘肃定西西北),想要过去必须先击败王保保。徐达在王保保大军对面安营扎寨,双方交战多次,都没分出胜负。他们已经是多年的老对手了,对彼此的用兵方式也颇为了解,所以打了好多次双方也没占到便宜。王保保不想这样僵持下去了,他让大军继续和徐达对峙,自己率领一支精锐,从小路悄悄接近徐达的左军,他要像两年前徐达在山西突袭自己那样,也给徐达来个突然袭击。
明军左军的将领是胡德济,是胡大海的养子。胡大海为朱元璋手下大将,在攻打江西、浙江的时候,为朱元璋立下汗马功劳。胡大海军纪严明,每打下一个地方,不乱杀人,不抢妇女,不放火烧毁民宅。胡大海这个人虽然没读过什么书,但是对读书人非常敬重,朱元璋手下的刘基、宋濂、叶琛、章溢等人都是胡大海举荐的。后来胡大海被部将杀害,朱元璋非常悲痛,因为胡大海的亲儿子犯法被杀,所以朱元璋对他的养子胡德济非常照顾,让他跟着大将军徐达北伐。当晚,王保保的精锐突然出现在明军的左军,胡德济一下就慌了,举止失措,明军大乱。同样是突袭,两年前,徐达、常遇春突袭王保保,王保保立马丢下十万大军自己逃走,而徐达比王保保强的地方在于他面临突发事件能做到从容镇定。徐达听说左军被劫,士卒大乱,第一时间命令明军将士不要惊慌,然后亲自率领大军抵抗,终于击退王保保的精锐。
晚上被劫了营,第二天徐达决定回击王保保,不过回击不是去劫营,而是直接率军同王保保进行大决战。决战的地方在沈儿峪,明军、元军数十万大军在这个地方混战,杀得天昏地暗,最后元军大败,这次王保保比在山西的时候更惨,在山西的时候,败逃还能带走十八个骑兵,现在只带了老婆孩子逃出去,剩下元朝的郯王、文济王以及国公、平章以下文武僚属一共一千八百六十多人都投降了明军,元军士兵投降的人数更为恐怖,一共有八万四千五百多人,另外还有上万的马匹骆驼以及其他牲畜(这些估计都是元军的军粮)。徐达下令继续追击王保保,王保保只好没命地逃跑,逃到黄河边,望着滔滔河水发傻,恰好河上漂过来一根木头,王保保和老婆孩子抱着木头才得以游过黄河,逃回和林(今蒙古国境内)。王保保败走后,徐达派邓愈去招降吐蕃,吐蕃就是西藏地区的政权,唐朝时非常兴盛,后来衰落,不过明朝还是按照以前的习惯称呼其为吐蕃。吐蕃的首领何锁南普本来就持观望态度,见明军大胜,也就投降了。
明朝另一路北伐大军是征虏左副将军李文忠率领的十万明军,这路大军的目的是直捣元顺帝刚搬的新家应昌。李文忠不仅是朱元璋的外甥,还是朱元璋的养子,很长时间他的名字不叫李文忠,而叫朱文忠。虽然李文忠的身份特殊,但他却从来没有胡作非为,反而谦虚低调,很有器量。不上战场的李文忠恭谨温顺,像个读书人一样,非常爱好学问,经常跟着当时著名的文人范祖干、胡翰学习,对诗词歌赋都很有研究;上了战场的李文忠,立马变得像常遇春一样骁勇善战。
两年前,李文忠跟着常遇春像一阵狂风一样,连战连胜,一直打到上都,把元顺帝赶跑。这次出征,李文忠继承了常遇春的作战风格,先是突然攻下兴和,接着进兵察罕脑儿,活捉元将竹真,又在骆驼山大败元朝平章沙不丁,接着马不停蹄地继续北进,再次击败元将上都罕,迫使上都罕投降。五月,李文忠的大军到了应昌,元顺帝实在搬不动家了,他已经在李文忠到来之前去世了,太子孛儿只斤·爱猷识理答腊继位,即为元昭宗。值得一提的是,元顺帝的庙号其实是元惠宗,元顺帝这一称呼是明朝给他起的,带有嘲笑的意思,因为明军攻打大都时,他不战而逃,把大都拱手让给了明军。
元顺帝去世,没法再逃了,搬家的任务交给了他的儿子元昭宗,元昭宗知道应昌守不住了,只好继续北逃,元昭宗的儿子买的里八剌以及后宫几百人都成了李文忠的俘虏。李文忠还不肯罢休,率领精锐骑兵穷追不舍,但是元昭宗跑太快,已经跑到遥远的和林(今蒙古国境内)和王保保会合去了,李文忠追赶不上,只好引军返回。回来的路上,李文忠也没闲着,到处清理元军残留势力,譬如在兴州(今河北滦平),大败元将江文清,元军三万七千人投降,在红罗山(今辽宁锦州境内)又大败元将杨思祖,又有一万六千人投降。
这次北伐,明军取得全面胜利,不但再一次全歼王保保军,而且再一次攻破北元首都,迫使北元继续往北逃走。两路北伐大军凯旋回来后,朱元璋大封功臣,一共封了六个公爵,李善长封韩国公,徐达封魏国公,李文忠封曹国公,冯胜封宋国公,邓愈封卫国公,因为常遇春已经去世,封常遇春的儿子常茂郑国公,其他众将也都有封爵,譬如汤和封中山侯,傅友德封颍川侯,周德兴封江夏侯,廖永忠封德庆侯,刘基封诚意伯等。刘基的爵位不怎么高,只是伯爵,连侯爵都不是,这倒不是因为刘基的功劳不大,论功劳刘基在朱元璋军中的地位类似于刘邦手下的张良,多次给朱元璋出谋划策,而且每次都算得非常准,功劳是非常大的。真正的原因是刘基看出来朱元璋这人只能同苦不能共甘,现在天下已定,若不像范蠡、张良那样功成身退,以后恐怕会遭不测,所以朱元璋称帝后,刘基多次请求回家养老。朱元璋想封刘基高一点的爵位,刘基也死活不肯,朱元璋只好把刘基的父亲、祖父都追封永嘉郡公。
除了封爵,朱元璋还赐给这些功臣们一样东西,那就是世券,也就是所谓的丹书铁券,这种东西像瓦片一样,上边刻着这些功臣某年某月于某地立了什么功劳,因为这些功劳,皇帝赐予他免死的特权。这可是个好东西,平常没事的时候可以用来炫耀,万一犯了什么事,还可以拿出来当免死金牌用。有了丹书铁券的保护,这些功臣们中的有些人开始肆无忌惮起来,觉得自己已经有两条命甚至像猫一样有九条命,但是他们忘了,丹书铁券虽然能当免死金牌用,但是有一种罪不能免,那就是谋逆,而谋逆这种罪又比较含糊,比“莫须有”好不到哪儿去。藏个刀枪、和皇帝用一样的东西,都有可能成为谋逆罪,所以,在不久将来的数场腥风血雨中,纵然有着丹书铁券,也和普通瓦片差不多。