明朝建立後將都城建在南京。在當時,元朝的殘餘勢力經常從塞北南下,威脅北部邊境的安全。信不過開國功臣的朱元璋決定采用過去的分封製,把一些關鍵位置的地方封給朱姓諸王。明太祖有二十六個兒子,除立為太子的朱標和早逝的第二十六子外,其餘二十四子外加一個從孫,總共封了二十五個王。除了防戍邊防之外,明太祖還賦予藩王興兵討伐朝廷奸臣的權力,以此來使朱氏王朝長治久安。
明初藩王有很大的權力,他們每年有萬石以上的食祿,在藩國內可以建立王府,任免官吏,除了不能幹涉地方民政外,幾乎跟皇帝沒什麽區別。最重要的是,因為設置藩王的目的之一便是鞏固國防,所以他們還擁有很大的軍權。諸王之中,靠近邊塞的勢力較大,其中寧、燕、晉三王兵力最強。他們經常帶兵作戰,戰功赫赫,尤其是燕王朱棣,格外受到明太祖器重,並負責統轄各鎮的兵馬。
洪武三十一年(1398年),太子朱標病故,朱標的兒子朱允以長孫的地位被立為皇太孫。各地的藩王大都是朱允的叔父,根本不把年輕的皇太孫放在眼裏,言行頗為不遜。朱允對此也十分清楚,有一次,朱允對東宮侍讀黃子澄說:“現在諸位藩王手握重兵,根本不把我放在眼裏,將來該怎麽辦呢?”黃子澄拿西漢平定七國之亂為例,勸朱允不要擔心,他說:“當時吳楚七國實力非常強大,但漢景帝一出兵,名正言順,他們很快就土崩瓦解。現在諸王的兵力還沒有達到擁兵自重的地步,您是皇位的正式繼承人,一旦舉兵興討,自然能夠一戰成功。”朱允這才稍稍心安。
明太祖去世,朱允即位,年號建文,即建文帝。建文帝即位後,各位藩王的不滿情緒日增。建文帝召見黃子澄決定削藩。
他們跟另一個大臣齊泰一起商量,齊泰想從兵力最強,野心最大的燕王朱棣下手,黃子澄不讚成這個做法,他認為這樣容易打草驚蛇,不如先把燕王周圍的藩王除掉,這樣再收拾他就輕而易舉了。恰好此時,周王的一個兒子告發父親跟燕、齊、湘三王密謀造反。建文帝利用這個機會,奪去周王兵權,把他廢為庶人。緊接著,岷、湘、齊、代四位藩王也相繼被借故革去兵權,發配邊疆。如此一來,藩王中勢力較大的就隻剩下燕王朱棣了。
朱棣麵對這種局勢,當然不願坐以待斃,他暗中招募勇士,選將練兵,隨時準備謀反。沒多久,建文帝在齊泰的建議下,派來了謝貴等人監視燕王動靜,並以備邊為名,抽調燕王兵力。為了麻痹建文帝,燕王假裝精神病發,成天胡言亂語,有時候還躺在地上,幾天不起來。謝貴去探病,那時候正是盛夏,燕王卻坐在火爐邊烤火,嘴裏還不停地叫冷。朱棣就這樣瞞過了眾人。
但是建文帝還是準備削奪燕王的爵位,他計劃派謝貴帶兵把燕王的黨羽一網打盡。沒想到謀事不密,燕王早就得到了消息,把王府裏充當建文帝內應的官員全抓起來,帶兵殺了謝貴,宣布起兵。為了師出有名,燕王稱黃子澄、齊泰為奸臣,打出“清君側”的旗號,還把自己的部隊稱為“靖難軍”。曆史上把這場內戰叫做“靖難之變”。
燕王久經沙場,手下的部隊也身經百戰。他起兵南下,很快就攻克了居庸關、密雲、遵化等地。而建文帝這邊雖然兵馬數量占有優勢,但那些跟著明太祖打天下的宿將們在文字獄中殺得幾乎一個不剩,新任命的將領根本不是燕王的對手,作戰連戰連敗。建文帝沒辦法,隻好罷免黃子澄、齊泰,向燕王求和。但被燕王一口拒絕。
這場戰爭進行了將近三年,燕王的部隊雖然勝多負少,但他的部隊畢竟有限,這些年來轉戰各地,逐漸成了強弩之末,燕王對此也無計可施。恰在此時,南京宮內的太監向燕王告密,說南京城如今兵力空虛,完全可以一舉攻克。燕王抓住這個時機,孤注一擲,率領幾乎所有將士南下,直取南京。部隊所向披靡,很快就攻到長江對岸。見形勢急下的建文帝又派人向燕王求和,以割讓土地,請求燕王退兵。這種緩兵之計當然瞞不過燕王,他指揮大軍渡過長江,包圍了南京城。過了幾天,守衛京城的大將李景隆打開城門投降,京城終於被燕軍攻破。
攻入南京城的朱棣首先是查問建文帝的下落。有人說城破前,皇宮燃起大火,建文帝跟一些後妃們想必已經葬身火海了。燕王派人在廢墟中尋找,找到幾具屍體,但這些屍體都已燒焦,連男女都很難分清。燕王對著屍體號啕大哭,嘴裏說著:“侄兒啊,我隻是幫你剪除奸臣,怎麽卻成了這個樣子啊!”並吩咐把屍體以禮下葬。這時群臣們就開始擁戴燕王稱帝,燕王當然推脫一番,然後就誌得意滿地登上了帝位。他廢除了建文年號,改的年號為永樂,表明自己是直接繼承了明太祖的帝位,並把這整個事件稱之為“建文遜國”,朱棣就是明朝第三帝——明成祖。