次年正月,惠宗闻报朱元璋称帝建立了大明王朝,恐慌和无奈之余,决定再度起用王保保,下诏给他称“朕视卿犹子”,表示如果他能够执行命令夺回山东,“则职任之隆,当悉还汝”,意思就是官复还职。王保保仍旧拒不奉诏。惠宗实在对此人感到失望,便令中书省左丞孙景益在太原设置分省,令关保领兵驻守,趁王保保势弱之际消灭他。熟料王保保乃枭雄本色,反倒抢先出兵攻占太原,将朝廷所置官吏一概斩杀。惠宗恼羞成怒,于二月间再次下诏,削夺了王保保的王爵和封邑,并诏令秃鲁、李思齐等人东出潼关征讨王保保;同时,皇太子也诏令关保出兵会讨。元王朝统治阶级内部的这些矛盾,为明军的北伐提供了空前的机遇。
洪武元年(1367年)三月十六日,北伐大军会师济宁,尔后直取河南汴梁。大军到达汴梁东北的陈桥,汴梁守将李克彝令自安丰来投的左君弼前往迎战,左君弼感戴朱元璋曾于去年将其被俘的老母送还,又见明军势大,因此拒不出战。李克彝见势态不妙,尽驱城中军民西逃河南府投奔脱因帖木儿,左君弼和元将竹昌先后请降。徐达命部将陈德驻守汴梁,自己则亲率大军沿黄河北岸西向追击李克彝。另外,敌后西线也传来捷报:征戍将军邓愈已经攻克南阳,正在扫荡周边州县。
此间,已经出关与王保保开战的李思齐、张良弼等人,眼见形势万分危急,各自慌忙撤兵,并一致遣人向王保保致歉,声明此次出师并非出自本心云云。看来他们都清楚王保保的英雄本色,大难临头之际,潜意识里都希望最终能够得到王保保的庇护。
四月初八,明军抵达塔儿湾(今河南偃师境内),脱因帖木儿率兵五万在洛水之北列阵以待。两军接战,常遇春十分勇猛,《续资治通鉴》如此描述当时的战斗情形:“遇春单骑突阵,锐卒二十馀骑攒槊刺遇春,遇春一矢殪其前锋,大呼驰入,麾下壮士从之”,战斗异常激烈,元军溃败,脱因帖木儿率残部逃往陕州(今河南陕县),李克彝则逃往陕西,河南行省平章政事、察罕帖木儿之父阿鲁温出降。徐达率军进驻洛阳,同时分兵攻克了蒿州、钧州(今河南禹州)、陈州(今河南淮阳)、汝州、荥阳等地。与此同时,大都督府同知冯胜(即冯国胜,此间已改名为冯胜)率部进逼陕州,?脱因帖木儿弃城而逃。冯胜占据陕州,兵锋西指,元将李思齐和张良弼闻风放弃潼关,逃入关内。冯胜紧随其后,率军入关,直达华州(今陕西华县),沿途元将,望风请降,形势对明军十分有利。
但是,坐镇应天的朱元璋皇帝并没有被接踵而至的捷报冲昏头脑,他始终保持着固有的冷静与清醒。洪武元年(1368年)四月二十四日,他遣使告谕正在关中前线高歌猛进的冯胜:“若克潼关,勿遽求胜而西。今大军方有事北方,宜选将留兵守关,以遏其援兵。尔且率师回汴梁,朕将躬往议之。冯胜接到诏令,立即停止追击敌军,在安排好所占城池的守备事宜之后,他率部经潼关折回到汴梁。
五月二十一日,朱元璋驾临汴梁,他下诏改汴梁路为开封府,然后在这里小住下来,一方面是为了就近指挥作战,另一方面是为了考察汴梁可否作为大明帝国的都城等事宜。六月,前线诸将齐聚开封,朱元璋召集他们开会,听取大家的汇报并讨论下一步的战略部置。徐达建议说,山东已经平定,河、洛也被我们掌握,王保保处在犹豫观望中,李思齐等已逃窜于西部,元朝的外授已经断绝,可“乘胜直捣元都”。朱元璋表示赞同,同时又提醒他要注意三件事情:其一,北方土地平旷,利于骑战,应当选择裨将率精锐骑兵为先锋,而以大军殿后;其二,应取山东之地的粮粟供应军队,可以缩短运输时间;其三,大军应“由邺趋赵”,也就是由今天的河北临漳到达邯郸,再“转临清而北,直捣元都”。如此一来,元大都将“外援不及,内自惊溃,可不战而下。”当徐达问及攻下元都之后,若元朝皇帝向北方逃窜时,是否发后穷追时,朱元璋很大度地说:“气运有胜衰,彼今衰矣,不烦穷兵。出塞之后,固守以防其侵轶可也。”实际上,朱元璋是担心北伐军的骑兵力量有限,中原立足未稳,而王保保、李思齐等又在山西、关中等地伺机以待,所谓穷寇勿追,怕自己的军队蒙受损失罢了。
七月十一日,朱元璋诏令徐州、济宁、益都的驻军会师东昌;同时诏令康茂才自陕州渡黄河进入山西,以牵制王保保。七月二十三日,朱元璋返驾回应天。临行之前,他提升冯胜为征虏右副将军,令其驻守开封;又令浙江、江西二行省以及苏州等九府,紧急输粮三百万石至开封,用以保障北伐军粮饷之供应。此外,他还特地告诫北伐军领导徐达、常遇春等人,说:“昔元之祖宗,有德格天,奄有九有。及其子孙,罔恤民艰,天厌弃之。君则有罪,民复何辜?前代革命之际,屠戮如仇,违天虐民,朕实不忍。诸将克城之日,勿掳掠,勿焚荡,必使市不易肆,民安其生。元之宗戚,皆善待之。庶几上答天心,成朕伐罪救民之志。”
闰七月初二,徐达按照朱元璋事前部署的进军路线,自中滦渡河北上,一路攻占卫辉、彰德、邯郸,继而往东折向临清。临清乃卫河连接大运河的交汇口,是北运船只的集结地之一。徐达传檄东昌守将张兴祖、乐安守将华云龙等人,令他们率部来临清会师;另外,命令参政傅友德为骑兵先锋,为大军开辟陆上通道。闰七月十五日,北伐明军分水陆两路自临清向北推进,一路攻克德州、沧州、清州等地。闰七月二十三日,明军攻克直沽(今天津狮子林),控制了运河的出海口。
元朝首都危在旦夕,但其统治阶级之间的内讧仍未休止。七月,貊高和关保按照元惠宗、皇太子等人先前的命令,各自率部攻打王保保的巢穴晋宁,结果兵败,双双成为王保保的俘虏。王保保遣人将此事上奏朝廷,惠宗见明军势不可挡,有心借机起用王保保,便下诏解释说这两人“间谍构兵,可依军法处治”,随后又撤销大抚军院,恢复王保保的中书省左丞职务,让他率兵自河北南下,抵御明军的进攻。同时,元惠宗又诏令中书省右丞相也速率兵攻打山东;诏令陕西行省左丞秃鲁率兵攻打潼关;诏令李思齐等率兵出七盘(今陕西宁强)、金(今陕西安康)、商之地,以图收复汴、洛之地。此所谓“四道进兵,犄角剿捕”。
照情理来说,倘若这个计划能够得到迅速有力的实施,元朝政府起码还可以多支撑一些时日。可是,令元惠宗感到丧气的是:秃鲁、李思齐接诏后相互观望,按兵不动;右丞相也速率军刚走到莫州,即被明军打败,也速劫掠莫州的一些老百姓向北方大漠逃去;王保保接诏后处死了貊高和关保,正拟从晋宁出兵,却闻报也速的败讯,便只好退守太原,也作观望之势。
中书省右丞相也速兵败逃亡后,元朝大都(今北京)震荡。闰七月二十五日,元朝知枢密院事不颜帖木儿战死于河西务(今河北武清东北)。惠宗令大将五十八国公率领万余名将士组成敢死队,在京城的门户通州阻挡明军。二十六日,明将郭英大败五十八国公,斩首数千级,五十八国公逃遁。二十七日深夜,明军占领通州,元朝京师大都的门户就此洞开。
眼看明军马上就要后临城下,惊恐万状的元惠宗连夜召集三宫后妃及皇太子商议逃亡事宜。其实,早在数年之前,惠宗就有战败之后逃离大都的想法,而耽罗(今韩国的济州岛)乃是其首选之地,据《高丽史·恭愍王世家》等史料记载,至正二十五年(1365年),惠宗曾派枢密院副使帖木儿不花驻守耽罗,之后又发工匠前往营造宫殿,并将一批金帛宝物运往耽罗。
元朝皇帝的脑海中竟然已经多次提前演绎了败亡后逃跑的画面,真是令人匪夷所思!从这个角度来讲,元朝在惠宗手中败亡实在是合乎情理,因为人间之事往往只是人的大脑持续意志和思想的产物——元惠宗在大脑中种下了失败的思想种子,因而是无论如何也不可能有胜利之果的,情况只会更糟:明军攻占通州,大都通往辽东的道路已被切断。无奈之余,元惠宗只得决定放弃逃向耽罗的计划,选择北逃上都。
洪武元年(1368年)闰七月二十八日,元惠宗妥欢帖木儿在清宁殿召见文武大臣,告知将弃城北走的决定。左丞相失列门、知枢密院事黑厮以及宦官赵伯颜不花等人谏道:“若车驾一出,都城立不可保!”请求皇帝“固守以待援兵”。惠宗哀叹道:“也速已败,扩廓帖木儿(王保保)远在太原,何援兵之可待也!”于是诏令淮王帖木儿不花监国,与中书左丞相庆童等人留守大都,自己则于当夜三更时分带着后妃、太子等皇室人员,出建德门经居庸关向北方大漠逃遁。
八月初二,明军从齐化门攻入城内,元朝留在大都的达官显贵和包括六名王子在内的皇亲国戚全部做了俘虏。受命监国的淮王帖木儿不花及左丞相庆童等六人拒不投降,徐达登上齐化门楼,宣布他们的罪状,下令将其斩首,除此再未妄杀一人。然后,他派人关闭宫殿大门,查封府库宝物和图籍档案,令指挥张焕、韦正率兵把守;宫中的嫔妃、宫女等女眷则着令宫中的宦官看护,严禁将士接近。
八月初三,徐达令傅友德、薛显率兵三万,向北追击元惠宗妥欢帖木儿。由于妥欢帖木儿走的是东路,而明军追兵走的是西路,结果无功而返。徐达再令傅友德从东路追赶,这时妥欢帖木儿一行已经走远,又是竹篮打水一场空。蒙元王朝发祥于漠北深处,广阔的大漠使它的主人有着充分的退避斡旋空间,因此,元惠宗不必像历代亡国之君那样,一旦国破便面临进退失据的绝境。不过,往日君临中原大地的尊贵与骄奢,转眼已经成为梦境,逃亡路上的漫天黄沙和风声鹤唳,这种巨大落差也够妥欢帖木儿等人痛苦吞咽了。
元朝皇帝妥欢帖木儿和皇太子爱猷识理达腊一行弃大都北遁,标志着蒙元王朝对中原的统治被正式推翻。元世祖忽必烈于1271年改“蒙古汗国”为“大元”,并于1272年迁都燕京(大都),至元惠宗妥欢帖木儿于1368年北遁大漠,前后共计九十多年,真正应验了“胡虏无百年之运”的谶言。纵观蒙元王朝辉煌的建国历史以及元末时期其君臣将相的胡作非为,正如朱元璋所说的那样——“昔元之祖宗,有德格天,奄有九有。及其子孙,罔恤民艰,天厌弃之。”诚然如此!