朱元璋的蛻變表現在他的一係列政治軍事行動中。在占領集慶後不久就不再用紅旗而改用黃旗。他在與陳友諒、張士誠的爭戰過程中,同元將察罕帖木兒、護廓帖木兒書信往來不斷。打敗陳友諒後,至正二十四年(1364)正月,他自稱吳王,設置百官,立子朱標為世子,這標誌著朱元璋政權已經變質。至正二十六年(1366)八月,他在聲討張士誠的《平周榜》中已用地主階級的口吻誣蔑紅巾 軍起義是“妖言既行,凶謀遂逞,焚蕩城郭,殺戮士夫,荼毒生靈”。而他自己則是“灼見妖言不能成事,又度胡運難與立功”,因而起來收拾這土崩瓦解的天下局勢。這年十二月,朱元璋派廖永忠去滁州(今安徽滁縣)迎接韓林兒,路上,沉溺韓林兒於瓜步(今江蘇六合東南),宣告了紅巾軍韓宋政權的滅亡。
朱元璋在次第平定江南的同時,始終注視著北方元廷的情況。在與張士誠的戰爭還未結束時,至正二十七年(1367)正月,他就借擴廓帖木兒拘留自己所派使者為口實,作書發出了北伐的警告。此後,雙方在徐州一帶小有衝突,他看出元方上疑下叛,將帥嫌隙,亡元時機已到,便在這年十月下令北伐。
在將士臨行時,朱元璋又向中原各地發布了著名的由宋濂起草的北伐檄文。在檄文中,他指責元帝“荒淫失道……於是人心離散,天下起兵”。他宣言,“當此之時,天運循環,億兆之中,當降生聖人,驅除胡虜,恢複中華,立綱陳紀,救濟斯民”。這就明確地把元末紅巾軍原來反對階級壓迫和民族壓迫的鬥爭變成了單純的民族鬥爭,把廣大農民反抗元朝封建統治的群眾運動變成了個別聖人的帝王事業。至於這個聖人,當然就是朱元璋自己。現在這個聖人遣兵北伐了,決心“拯生民於塗炭,複漢官之威儀”。檄文宣布,我們是號令嚴肅、秋毫無犯的師旅,中原各地“民人”
不要逃避。檄文還宣布,蒙古色目“願為臣民者,與中夏之民撫養無異”。所以,這一檄文對當時的漢族地主階級有很大的號召力,對瓦解敵人也起了很大作用。
至正二十八年(1368)正月,朱元璋在南京登上帝位,建國號為明。這樣,朱元璋的明軍更具有正統的色彩,他的北伐之舉更顯出“吊民伐罪”的性質。朱明軍隊強大而有紀律,一係列政策又大大減少了漢族地主、蒙古貴族和色目上層的抵抗,因此北伐軍十分順利。徐達率軍先抵淮安,遣人往沂州招諭王宣、王信父子。王宣是靠組織“義兵”被元朝授予淮南淮北義兵都元帥的,察罕帖木兒死後,擴廓帖木兒忙著打內戰,王宣父子乘機攻掠山東全境。當徐達來書招降後,王宣降後複叛,被徐達鎮壓。接著莒州、滕州、益都、東平、兗州、濟南、濟寧、密州、登州、萊州、東昌等地,相繼克複,元守將或降或遁,由征戍將軍鄧愈率領的偏師也由襄陽北略南陽,進展順利。
北伐的第二步是“旋師河南,斷其羽翼”。這是從洪武元年(1368)三月開始的,徐達等率軍進入河南後,第一個目標是汴梁。當時盤踞在汴梁的是元守將李克彝和投降元朝的原天完政權將領左君弼等,左君弼投降,李克彝逃遁。接著,河南、滎陽、福昌、鈞州(今河南禹州)、許州、陳州、汝州等地或降或克。同時,由馮宗異率領的偏師克陝,扼潼關,西略華州,以防李思齊等援兵東來。五月,朱元璋抵汴梁,準備進軍大都。
北伐的第三步是“進兵元都”。這時,朱元璋已來到前線,與將領們會見,朱元璋問徐達如何進取大都。徐達說:“我攻打山東、河南時,擴廓帖木兒在太原觀望不前。現在我軍占領了潼關,張良弼、李思齊失勢西竄,元廷已絕援。現在一定可以拿下大都這個孤城了。”朱元璋同意這個看法,並具體指示了作戰方案。七月,將領們出發時,朱元璋重申了“毋擄掠,毋焚蕩,毋妄殺人”的紀律並進一步要求大軍做到“必使市不易肆,民安其生”。還加了一條政策:“凡元之親戚,皆善待之。”閏七月,徐達自中灤渡過黃河,各路兵馬在臨清(今屬山東)會師,大舉北上。不久,明軍攻下直沽,元都大震。這月二十七日,徐達已進占通州。
元帝妥懽帖睦爾聞知通州已失,心驚膽戰。他先在清寧殿召集後妃、太子等商議避兵北行,然後又在端明殿召集群臣會議。端明殿內一片混亂,大臣們意見不一。一些人認為皇帝不能離開都城,妥懽帖睦爾聽不進去,宦官伯顏不花放聲大哭,說:“這個天下是世祖忽必烈開創的,陛下應當死守,怎麼能丟棄呢!我們願率軍民和諸護衛軍出城抗戰,請求陛下固守這京城!”妥懽帖睦爾在殿內徘徊了一陣子,歎了口氣,說:“時至今日,豈可再當宋朝的徽欽二帝!”他覺得與其被俘,不如逃走,就在這天的黑夜裏,妥懽帖睦爾率同後妃、太子和一些大臣,打開健德門逃出大都,經居庸關,奔向北方茫茫的草原。