有趣的是,朱元璋还将张昶扣留了下来,并高兴地告诉刘基(即大名鼎鼎的刘伯温)、宋濓说:“元朝送一大贤人与我,你们可以与他议论大事。”张昶在元朝任职多年,精通朝章制度,为朱元璋所看重,与张昶同来的副使马合谋则被处死。不过,朱元璋派往察罕帖木儿处的使者却被王保保送回。这大概是二人的第一次交锋。

张昶仕明后,累官至中书省参知政事,因为有才辩,明习故事,裁决如流,甚为明太祖朱元璋信任。但在他内心深处,还认为自己是元朝旧臣,心中颇多眷念。明太祖朱元璋曾经放还一批蒙古俘虏,张昶便暗中托其中一人带书到漠北,想访问儿子的下落,结果被左丞相杨宪发现。在审问时,张昶写道:“身在江南,心思塞北。”以此明志,明太祖朱元璋大怒,下令杀了他。不过,杨宪自己的下场也不好,不久后便因争夺相权而被明太祖朱元璋诛杀。

与张昶一样表现出气节的还有王保保的部下蔡子英。蔡子英,河南水宁人,元至正进士,察罕帖木儿开府河南,聘其参军事,累官至行省参政,后来一直跟随王保保转战。王保保在沈儿峪之战被徐达打败后,蔡子英与王保保失散,逃入南山。明太祖朱元璋久闻蔡子英的大名,下令绘其相貌,四处搜查。不久,蔡子英被明军搜获,但面对酷刑和高官厚禄,一直不肯投降。有一天,蔡子英突然大哭不止,别人问他原因,他说:“无他,思旧君耳。”明太祖朱元璋也难得被感动了,洪武九年(1376年)十二月三十日,命有司送蔡子英出塞,让他去找在和林的故主。只是此时王保保已经故世了。

王保保平定北方后,便陷入了元朝内部权力斗争的旋涡中,从此无力自拔。他先是屡次出兵,与驻守大同的中书平章孛罗帖木儿争夺晋、冀之权。孛罗帖木儿之前与王保保养父察罕帖木儿就有矛盾,两军为了抢夺地盘,同室操戈,狠狠打了几仗,互有胜负。元顺帝无力制止,多次派人从中调停,却没有任何效果。察罕帖木儿被刺杀后,孛罗帖木儿趁机兴兵抢占之前察罕帖木儿的防地,王保保对此自然不能容忍,于是内讧再起。

而此时,元朝宫廷斗争正日益激烈,元顺帝和自己的儿子太子爱猷识理达腊斗得不可开交。太子爱猷识理达腊拉拢了王保保做外援,支持元顺帝的御史大夫老的沙也不甘示弱,立即向孛罗帖木儿示好。此时元朝局势极度动荡,老的沙想借此机会,以元顺帝的名义铲除支持太子的丞相搠思监、朴布华,结果引来皇后奇氏和太子爱猷识理达腊的不满。老的沙和知枢密院事图坚帖木儿为了逃脱太子的追杀,逃到大同孛罗帖木儿处。太子爱猷识理达腊几次派兵索要,均遭到孛罗帖木儿的拒绝。太子怀恨在心,势必要铲除孛罗帖木儿而后快。在太子的指使下,丞相搠思监、朴布华联名上书,诬陷孛罗帖木儿图谋不轨,于是,孛罗帖木儿以恃权跋扈的罪名被罢兵权。

然而,罢兵权只是元朝廷的一厢情愿,孛罗帖木儿也不是个省油的灯,竟然带领大军进逼京师大都,上演了一出“兵谏”。当时大都没有设防,孛罗帖木儿大军进逼,城内大惊失色,一片混乱。太子爱猷识理达腊为了避祸,在心腹侍卫的保护下出光熙门,东走古北口,准备撤到兴松地区。元顺帝为了自保,不得不将丞相搠思监、朴布华捆送给孛罗帖木儿,孛罗帖木儿这才心满意足,回师大同。

然而事情并没有就此结束,反而愈演愈烈。太子爱猷识理达腊回到大都后,命令王保保出兵攻打孛罗帖木儿。王保保立即派部将关保率军进逼大同,孛罗帖木儿留下部分兵力防御,自己亲自率军再次进军大都。太子爱猷识理达腊带兵迎击,结果大败,太子本人不得不逃往太原投奔王保保。孛罗帖木儿入大都后,被元顺帝任命为中书左丞相,负责统领全国军队,自然是志得意满。

太子爱猷识理达腊在王保保军营中,调兵遣将,汇集各路人马,准备大规模讨伐孛罗帖木儿。孛罗帖木儿听到消息后,便将太子的母亲皇后奇氏囚禁起来,然后伪造奇氏的书信,想骗回太子爱猷识理达腊,只是太子没有上当。皇后奇氏为了讨好孛罗帖木儿,献上无数高丽美女。不久,太子的兵马进逼大都,孛罗帖木儿战败,他的倒行逆施也引起一些朝中大臣的不满,一日进宫时被刺杀。一场大乱由此而平,元顺帝下诏召太子回宫。

王保保护送太子爱猷识理达腊回到大都后,升任中书左丞相、知枢密院事。但于他又有新的危机。太子爱猷识理达腊之前到太原的时候,准备援引唐肃宗灵武自立的故例,自立为皇帝,但遭到王保保的激烈反对。王保保入京前,皇后奇氏派人送密信给他,命他率重兵护送太子入城,以武力兵谏的方式迫使元顺帝让位。王保保也没有同意,只将大军驻扎在离京师三里处,带了数骑入城。如此一来,太子爱猷识理达腊和皇后奇氏都恨上了王保保,甚至元顺帝也猜忌他,认为他兵权太重。王保保见在京师无法立足,只好请求外出带兵。元顺帝便顺势封他为河南王,总掌天下兵马,代皇太子统兵,负责镇压农民起义军。

然而,王保保并非“根脚官人”(世袭贵族),资历和名望都不够,各地将领大都是跟他养父平起平坐的人物,如何肯安心接受一个后辈的统辖?加上元朝内部错综复杂的政治斗争,各地将领都抗拒他的调度。至正二十六年(1366年)二月,王保保调动各处兵马出兵南征,张良弼、李思齐、脱列伯、孔兴、张思道等部人马均不听调遣。王保保长叹道:“我奉诏总天下兵,而镇将不受节制,何讨贼为?”于是派他的弟弟脱因帖木儿守济南,防遏农民起义军从南面进攻,自己率领主力入关,攻打不听调遣的李思齐等人。几方相持一年,为了争夺地盘,征战不休。元顺帝再三命令王保保停战,专心南征,但王保保不听。

元军内讧为朱元璋提供了最佳的时机,他首先采取各个击破的策略,蚕食、兼并各支农民起义军,等到实力大为扩充后,便筹划挥师北上,与元朝决一雌雄,争夺天下。

这时候,元顺帝对王保保的疑心与日俱增。刚好王保保派遣部下貊高率精锐去征讨李思齐,貊高手下一部分将领原来是孛罗帖木儿的部下,临阵倒戈,逼迫貊高投向元顺帝。元顺帝借机下诏,削去王保保统帅权,只率本部兵马,改由太子爱猷识理达腊总制天下兵马。

王保保被解除兵权后,退到泽州(今山西晋城),得力部将关保见风使舵,也投向了元顺帝,对王保保打击颇大。元顺帝见王保保势单力孤,竟然不顾南方有朱元璋这等蠢蠢欲动的大敌,还想落井下石,下诏李思齐等军合力讨伐王保保。王保保愤怒之极,带兵重新攻占了太原,杀死了元朝廷任命所有的官吏,以此来向元顺帝示威。元顺帝也是勃然大怒,下令四方军队一起讨伐王保保。

就在元朝内部自己人跟自己人打得火热的时候,朱元璋所派出的徐达率领的北伐军势如破竹,径直下山东、取汴梁,元军望风投降,竟无一人抵挡。

有趣的是,朱元璋听说王保保被元顺帝围剿的时候,立即遣使招降,表示愿意伸出援助之手。然而,王保保不但没有回应,而且将使者杀死,表示与朱元璋势不两立的决心。尽管如此,朱元璋还是亲赴河南,祭祀王保保的养父察罕帖木儿,并派人为其守墓。可惜的是,朱元璋着意笼络王保保的怀柔策略并没有起到任何效果。

眼见朱元璋军长驱直入,元顺帝才想起王保保的好处,慌忙下诏恢复王保保官爵,命其率军由中道直抵彰德、卫辉;也速率军经由东道水陆并进至山东;图鲁东出潼关,攻取河洛;李思齐南出七盘,进军汴梁,与扩廓帖木儿兵分四路挺进;知院俺普、平章琐住等军,分兵东西,配合行动;辽阳左丞相也先布花、知院厚孙等部,守御海防;各路人马均受太子爱猷识理达腊节制。但此时元军军心涣散,军无斗志,也速一军首先溃败,图鲁、李思齐并未出兵,王保保自晋宁退守冀守,后退守太原。

元顺帝恢复王保保官爵诏书下才一个月,徐达、常遇春的大军已经逼近了大都,王保保勤王不及,元顺帝北逃,大都陷落。元都陷落后,在明军进逼下,王保保率众奔甘肃,后拥兵塞上,屡扰西北边地,成为明朝的西北大患。

元顺帝妥欢帖木儿北逃后,不甘心失败,一心想回到大都,催促王保保率兵出雁门关,由保安州经居庸关,进攻大都。王保保依命而行。明将徐达趁王保保出兵之机,率军突袭太原。王保保在保安州得知消息后,立即还兵援救太原。前锋先与明军激烈交锋,不分胜负。之后,王保保在城西安营扎寨,打算与明军决一死战。不料王保保部将豁鼻马暗中投降了徐达,约为内应。徐达当机立断,当夜便派轻骑暗中偷袭。王保保正在帐中读书,忽然外面喊杀连天,他料知内外有变,急忙推案而起,连靴子都不及穿齐,光着一脚跑出帐外,跨上一匹马飞逃。仓促之间,手下只有十八骑跟随。常遇春率军追击,但没有追上。这是王保保一生与明军交锋所遭遇的第一次重大失败,之后,他转战于山西、甘肃、陕西、宁夏等地。

洪武三年(1370年),明太祖朱元璋派徐达为征虏大将军,西征王保保,意图清除西北隐患。双方在沈儿峪口对峙交战,王保保大败,从皇城逃回到漠北哈拉和林。明将郭英一路追击,一直追到宁夏,不及而还。至此,王保保原来所控制的陕西、甘肃一带,皆被明军占领。从此以后,王保保再也没有机会回到中原。

王保保的家眷在这一战中都被明军俘虏,妻子、妹妹被俘,包括他尚在襁褓中的最小的儿子。为了笼络北元势力,明太祖朱元璋对这些俘虏善加优待,还把王保保的妹妹嫁给了自己第二个儿子秦王朱樉为秦王妃。后来秦王朱樉死后,王保保的妹妹被迫给秦王殉葬。

明太祖朱元璋曾经说:“如今天下一家,只有三事未了,挂在心头。一件少传国玉玺,一件王保保未擒,一件元太子无音讯。”可见王保保在明太祖心中的地位。他爱惜王保保是北元将帅中最出色的人才,“及扩廓视师河南,太祖乃复遣使通好”,先后七次派人与王保保通好。王保保“留使者不还。凡七致书,皆不答。既出塞,复遣人招喻,亦不应”。王保保逃往漠北后,明太祖朱元璋仍然不肯放弃招降之意,先派王保保的前部下李保保(蒙古名魏赛因不花)前去招降。李保保原为王保保养父察罕帖木儿部下,也是王保保留守山东的将领,在洪武元年投降了明军。然而,李保保到漠北后,王保保鸩杀了他。

第二个往和林的说客是李思齐。李思齐原是元朝关中大军统帅,与王保保并称两员大将,为元朝倚重。后来兵败凤翔,为徐达所困,不得已投降了明朝。但李思齐与王保保素有嫌隙,同在元朝为官时便有仇。李思齐与王保保的养父察罕帖木儿为同乡,二人关系甚好。后来中原群雄并起,反抗元朝。元顺帝派军南下平叛,王保保被封河南王,用檄文调动李思齐兵马。李思齐见王保保在檄文中的语气甚为无礼,勃然大怒,不听调度。王保保也大怒。两方各调人马,自己跟自己打了起来。元顺帝居中调和都没有效果。双方打了整整一年,大小几百战,不分胜负。后来,元顺帝借王保保部下貊高倒戈之际,解除了王保保的统帅权。尽管如此,元顺帝还是疑忌王保保,派皇太子爱猷识理达腊总制天下兵马,并利用李思齐防备王保保。后来,王保保被明将徐达围困在宁夏,曾经向当时驻防陕西的李思齐求救,恳请他助自己一臂之力,李思齐却拒不发兵,结果一战中王保保损兵折将,此后对李思齐怀恨在心。

李思齐明知王保保恨他入骨,明太祖朱元璋此时派他前往和林招降,隐有借刀杀人之意,却不敢违命,只好硬着头皮出使漠北。

见面时,王保保倒没有表现出要清算老账的样子,以礼相待李思齐。只是当李思齐说到招降时,王保保默不作声。李思齐知道此行必然无功,便赶紧辞别。王保保特地派骑士送李思齐到塞下。刚要分别时,骑士突然说:“主帅有命,请留一物为别。”李思齐道:“我远来,无所赍送,怎么办?”骑士道:“珍玩财宝,我主帅并无所爱,只要你的一条手臂。”

李思齐这才知道王保保一直没有忘记旧仇,取自己手臂之意是报复当初他不肯助一臂之力,但势不可免,只好挥剑砍下自己的左臂。回来后不久,李思齐便因伤重而死。

对数次招降王保保的失败,朱元璋感到非常无奈,他曾对身边的人说:“我对王保保屡次招降,如果他投降我,不失王侯之位,可以做一代名臣。况且元朝已经快完蛋了,他却死心塌地地跟随元主,岂不是一个不识时务的人吗?”表示了对王保保始终忠于元朝的不理解。

王保保逃到哈拉和林后不久,元顺帝太子爱猷识理达腊也逃到此处,与王保保会合。此时元顺帝已死,爱猷识理达腊随即在哈拉和林即皇帝位,称必力克图汗,历史上也称其为元昭宗,年号宣光。他厉兵秣马,希望有朝一日重登中国皇位。为此,他甚至不计前嫌,将国事均委于王保保。自此,王保保开始了独撑将倾天下的重任。然而,蒙古的军事力量已经衰败了,不再是从前战无不胜的铁骑,北元在与明朝的较量中节节败退,北元主力逐渐北移到哈拉和林一带。

洪武五年(1372年),明太祖朱元璋打算乘胜彻底打垮北元的势力,以除后患,派徐达率领十五万大军,分东西中三路进攻北元,直指北元的政治中心哈拉和林。中路由徐达率领,由雁门直趋和林;东路由左副将军李文忠率领,由居庸关至应昌,然后直扑土拉河,从西北面攻击和林;西路由征西将军冯胜率领,出金兰,取甘肃。三路人马各统兵五万。

哈拉和林为北元大本营,一旦被明军攻破,将代表着北元的灭亡。因此,北元进行了顽强的抵抗,战斗十分激烈。

东路李文忠军打败了所遇到的北元军队,但因征程遥远,常乏水草,又遭到北元军顽强的抵抗,自身的损失也很严重。西路军取得了一定的胜利。中路军由徐达亲自统率,遭遇到的便是死对头王保保。徐达的先锋部队蓝玉(明开国大将常遇春内弟)在土拉河畔打败了王保保的军队后,便一路追击。连一向谨慎的徐达都没有意识到这是王保保的诱敌之计。王保保用诱敌之计将明军逐渐引入纵深后,随即与北元将领贺宗哲合军,向徐达的主力发起进攻,明军大败,死亡万余人。

这次北征以明军东路和中路的惨败而告终,明朝典籍史书对这次战役均是轻描淡写地一笔带过,不做太多的评论。但之后在相当长时间内,明军再不敢深入北方草原作战,由此可见这次北征对明朝廷来说是何等刻骨铭心。

同年,明太祖朱元璋派李文忠、冯胜、邓愈、汤和等将领协助镇守北平(今北京)的徐达“统兵往山西、北平等处练兵备边”,他还反复告诫众将领说:“御边之道,固当示以威武,尤必守以持重。来则御之,去则勿追,斯为上策……但保障清野,使来无所得,俟其惰归,则率锐击之,必掩群而获。”显然,经过惨痛的教训后,明朝廷已经意识到在目前的补给条件下,明军无法深入蒙古腹地取得战争的胜利,以致不得不重新考虑对蒙古的策略,转战为守,加大增强北方军事防御实力,以图长效守备。