靖难之役

背景

明朝建立後，明太祖朱元璋為了鞏固自己及子孫的統治，便大封宗室二十五人為藩王，駐守全國各地。這些藩王雖然沒有封地的管治權，但擁有護衛軍隊，少者有三千人，多者至一萬九千人，駐守北方邊境的九位邊王（遼、寧、燕、谷、代、晉、秦、慶、肅）軍權更大，如寧王「帶甲八萬，革車六千」。
朱元璋的太子朱標不幸早逝，太孫朱允炆是諸王之姪，感到難以制約各叔父們的勢力。加上諸王擁有軍權，對他構成潛在威脅，便有削藩之意。洪武三十一年（西元1398年）閏五月初十，明太祖朱元璋去世，朱允炆作為太孫繼位，是為惠帝（建文帝）。惠帝發布太祖遺詔，令諸王留於封地，不要赴都；甚至燕王朱棣已經前來奔喪，卻被惠帝命令返回，導致諸王不滿。惠帝於是與齊泰、黃子澄商量開始削藩。

建文帝削藩

朱允炆於洪武三十一年閏五月繼位後，立即開始削藩。在削藩順序上，齊泰認為應先削實力最強的燕王，時戶部侍郎卓敬亦上疏請改燕王封地於南昌；但黃子澄反對，認為燕王有功無過，爲了爭取輿論支持，應該先找有問題的親王下手。惠帝支持黃子澄，遂先後廢除五位親王。
洪武三十一年七月，削周王。因周王是燕王同母兄弟，而朱允炆怕他與燕王呵成一氣，於是決定先廢周王。時周王十歲的次子朱有爋告發父親謀反，於是派曹國公李景隆以備邊之名經過開封，將周王全家押回南京，廢為庶人，遷往雲南蒙化（今雲南巍山）。
建文元年（1399年）四月，削齊、湘、代三位親王，廢為庶人。湘王不堪受辱，為保名節舉家自焚；齊王被軟禁在南京；代王被軟禁在封地大同。兩個月後，削岷王，廢為庶人，徙漳州。
由於惠帝削藩激化矛盾，藩鎮與中央開始決裂，此時實力最強的燕王就成了真正的諸王之首。而皇帝與朱棣之間的博弈亦逐漸走向明處，變得更加激烈。

朱棣起兵，奪取幽燕

洪武三十一年十二月，為了提防燕王謀反，朱允炆派工部侍郎張昺為北平布政使，都指揮使謝貴、張信為北平都指揮使。隨後又命都督宋忠屯兵駐開平，並調走北平原屬燕王管轄的軍隊。
燕王朱棣見到幾位親王先後被削藩，或貶或死，明白如此下去必定無法逃過此劫，遂一邊爭取時間一邊做戰爭準備。爲了爭取時間，建文元年，朱棣先裝病，使惠帝放三子回北平；之後由於屬下被朝廷處死，遂藉機裝作精神失常。但由於王府長史葛誠叛變，密奏朝廷「燕王無病」，朱棣裝瘋被發覺。
時燕王遣使入京師金陵奏事，使者被齊泰等審訊，被迫供出燕王的異狀，於是朝廷下密旨，令張昺、謝貴逮捕燕王幕府的官屬，張信逮捕燕王本人。但張信與其母親討論之後，將此事告知朱棣。於是朱棣和僧人姚道衍等謀劃舉兵，令張玉、朱能將八百勇士帶入府中潛伏，以待變故。
張昺、謝貴得到朱允炆密詔後，七月初四帶兵包圍了燕王府。朱棣假意將官屬全部捆縛，請二人進府查驗。二人進府後，朱棣派出府內死士將其擒獲，並連同府內叛變的葛誠、盧振一同處決。當日夜裡，朱棣攻下北平九門，遂控制北平城。
燕王朱棣起兵造反，援引《皇明祖訓》，號稱清君側，指國君身邊的齊泰和黃子澄為奸臣（謀害皇室親族），需要鏟除，稱自己的舉動是，為國「靖難」（意為「平定國難」），並上書於惠帝朱允炆。
燕軍控制北平後，七月初六，通州主動歸附；七月初八，攻破薊州，遵化、密雲歸附；七月十一，攻破居庸關；七月十六，攻破懷來，擒殺宋忠等；七月十八，永平府（今河北盧龍縣，屬秦皇島市）歸附。七月二十七，為防止大寧軍隊從松亭關偷襲北平，用反間計使松亭關內訌，守將卜萬下獄。至此，北平周圍全部掃清。燕軍兵力增至數萬。
燕軍攻破懷來後，由於領地相距太近，七月二十四日，谷王朱橞逃離封地宣府（今屬張家口，距北京約150公里，距懷來約60公里），奔金陵。八月，齊泰等顧慮遼王、寧王幫助燕王，建議召還京師；遼王從海路返京，而寧王不從，遂削寧王護衛。
宋忠失敗後，部將陳質退守大同。代王本欲起兵呼應朱棣，被陳質所控制，未果。

擊敗耿炳文

七月，朱棣反書至都，朱允炆祭告太廟，削朱棣宗室屬籍，廢為庶人。決定起兵討燕。在真定（今河北正定）設置平燕布政司。
元年八月，帝乃祭告天地宗廟社稷及江淮旗纛之神，書諭諸王削燕屬籍，命禮部侍中黃觀草詔。詔曰：朕奉先皇帝遺詔，纂承大統，宵衣旰食，思圖善政，以安兆民。豈意國家不幸。骨肉之親屢謀僭逆。去年周庶人橚，潛為不軌，辭連燕、齊、湘三王，皆與同謀。朕以親親之故，不忍暴揚其惡，止治橚罪，余置不問。今年齊王榑謀逆事覺，推問犯者，又言與燕王棣、湘王柏同謀大逆，柏自知罪惡難逃，自焚死，榑已廢為庶人。朕以燕王棣於親最近，未忍窮治其事。今棣乃忘祖逆天，稱兵構逆，意欲犯闕，危宗社。悖逆如此，孰不駭聞？昔先皇帝時，棣包藏禍心，為日已久。印造偽鈔，陰結人心，朝命窮極，藏匿罪人，先帝震怒，遂以成疾。至於升遐，海內聞知，莫不痛忿。今不悔過，又造滔天之惡，雖欲赦之，而獲罪宗社、天地不容。已告太廟廢為庶人，遣長興侯耿炳文等率兵三十萬往討其罪。咨爾中外臣民軍士，各宜懷忠守義，奉職平燕，與國同心，永安至治。布告天下，咸使聞知。 
由於朱元璋晚年誅殺了不少良將，導致惠帝手下缺乏將才可用，朝廷只得任命65歲老將耿炳文率兵北上討伐，號稱三十萬人，實際先行率領十三萬人出兵。在臨行時，朱允炆親自告誡：「毋使朕有殺叔父名。」
耿炳文率軍在八月十三日到達真定，並分兵於河間、鄚州（河北任丘北約30里）、雄縣，為犄角之勢。在經過觀察後，八月十五日，燕軍趁中秋夜敵軍不備，偷襲雄縣；成功後又利用伏擊擊敗了鄚州的援兵，遂攻克鄚州，收編剩餘的部隊。
耿炳文部將張保來降，告知朱棣耿炳文的部隊分駐滹沱河兩岸，於是朱棣讓他回去告訴耿炳文「雄縣、鄚州大敗，燕兵將至」，以打擊其士氣，並使耿炳文合兵一處，便於一舉擊潰。耿炳文果然將南岸的兵調過河。
八月二十四日，燕軍到達無極縣。從樵夫和中央軍被俘士兵處得知敵情，於是燕軍發動決戰。
二十五日，燕軍趁耿炳文送使臣出城時偷襲中央軍，炳文逃回城中後，怒而迎戰。在燕軍主力與耿炳文軍相持時，朱棣親自率軍襲擊其側翼，耿炳文大敗潰逃；朱能帶三十餘騎沖入中央軍陣中，所向披靡，中央軍投降三千多人。中央軍狼狽逃回城中，城池差點失守。部將李堅、甯忠、顧成等被俘；士兵被殺、被俘數萬人（後放還）。
耿炳文率殘部不到十萬人在真定堅守不出，燕軍攻城三天不克。八月二十九日，燕軍返回北平。顧成降燕之後，留在北平協助燕世子朱高熾守城。

大勝李景隆

耿炳文戰敗的消息傳到南京，朱允炆開始擔憂戰事，考慮換將。黃子澄說曹國公李景隆是名將李文忠之子，建議他接任；齊泰反對，但惠帝不聽。八月三十日，拜李景隆為大將軍，誓師出征，並召回耿炳文。李景隆以德州為大本營，調集各路兵馬包括耿炳文敗兵，增兵至五十萬人，九月十一日進至河間。
朱棣聽說朝廷以五十萬傾國之兵交付李景隆，大喜過望，說趙括之失必然重演，燕軍必勝。並提出李景隆之五敗：
一、為將政令不脩，紀律不整，上下異心，死生離志。
二、今北地早寒，南卒裘褐不足，披冒霜雪，手足皸瘃，甚者墮指，又士無贏糧，馬無宿槁。
三、不量險易，深入趨利。
四、貪而不治，智信不足，氣盈而愎，仁勇俱無，威令不行，三軍易撓。
五、部曲喧嘩，金鼓無節，好諛喜佞，專任小人。

守北平，襲大寧

九月初一江陰侯吳高率遼東兵攻打永平郡，故朱棣趁李景隆躊躇不決之際，九月十九日前往救援。九月廿五，擊敗吳高，決定趁勢偷襲大寧（今內蒙古寧城）以獲得其精銳部隊；另一方面利而誘之，將中央軍引至「空城」北平下。九月廿八，出師。傳信給燕世子朱高熾，令堅守。
十月初六，燕軍經小路到達大寧城下。朱棣單騎入城（一說擊敗守將房寬後入城），見寧王朱權，哭訴自己無路可走，向朱權求救，希望能向朝廷上書，謝罪免死。朱權相信並收留了他。在居大寧期間，朱棣令手下吏士入城結交並賄賂大寧的軍官等。十月十三，朱棣提出告辭，朱權在郊外送行；但朱權來到郊外後，伏兵盡起，大寧軍紛紛叛變，歸附朱棣。於是朱權與王妃、世子等一同隨朱棣前往北平，而大寧的全部軍隊（包括其騎兵精銳朵顏三衛）都被朱棣收編。大寧成為空城。朱棣實力大增。
聽說燕王朱棣率精銳徵大寧，李景隆引軍攻北平。中央軍在鄭村壩（今大興以東二十里）紮營，築壘同攻北平九門。燕王世子朱高熾堅守。朱高熾遣人夜間偷襲中央軍大營，獲得了一定的喘息時間；中央軍攻城急時，城中婦女也上城頭向下投擲瓦石。
中央軍唯一一次獲勝的機會是都督瞿能攻張掖門（一說彰義門，據《方輿紀要》，彰義門即西直門；存疑），幾乎要攻下時，因被李景隆所忌，只得停止。功敗垂成。農曆十月北平甚寒冷，於是燕軍守城部隊夜裡汲水澆於城牆上，次日城牆結冰，無法攀登。中央軍因天寒地凍，戰鬥力驟降，攻勢自此受阻。

鄭村壩之戰

十月十九，燕軍在會州整編，分立五軍（中前左右後）。十月廿一，入松亭關。
十一月初五，渡白河（時已結冰，渡河處在今北京順義區東），並打敗李景隆的哨探陳暉部隊萬餘人。當天，與李景隆大軍在鄭村壩會戰。燕軍左右衝擊，連破其七營，李景隆大敗。當夜，李景隆見戰事不利，令鄭村壩所有軍隊輕裝撤退。數十萬人的輜重全部留給了燕軍。但李景隆走得匆忙，沒有通知圍攻北平城的軍隊，於是燕軍輕易擊潰城下的敵軍，獲得其物資。李景隆率軍撤回德州，鄭村壩之戰結束。此戰中央軍喪師十餘萬。
十一月初九，朱棣回到北平城，因為之前（七月）上書沒有回信，再次上書朝廷，陳述齊、黃構陷宗藩。惠帝不應。十二月，朱棣用反間計令遼東守將吳高被削爵貶黜，消除東北方向的後顧之憂。
由於李景隆準備等來年開春再北上攻燕，朱棣決定攻打大同，以使中央軍疲於奔命。十二月十九日，出師攻大同。十二月廿四，抵達廣昌，守將楊宗投降。建文二年（1400年）正月初一，燕軍抵達蔚州，守將王忠、李遠投降。二月初二，燕軍攻大同。由於大同是代王封地且軍事地位極重要，李景隆不得不救援。待李景隆走出紫荊關後，燕軍從居庸關返回北平。中央軍在冰天雪地中白跑一趟，兵力、裝備大量損失，士氣受到重創。
二月廿八，李景隆給朱棣寫信，請求暫時停戰。燕王回信索要齊泰、黃子澄等。一說李景隆自此有貳心。
除了使中央軍白跑了一個月外，燕軍在本次伐大同時意外遇到了從蒙古來降的軍隊，收編之。此外，保定府於建文二年二月降燕。

白溝河之戰

建文二年四月，李景隆從德州，郭英、吳傑等從真定誓師北伐，目標是白溝河（北拒馬河）。兵力增至六十萬。燕軍亦出。四月二十日，燕軍渡過玉馬河，駐於蘇家橋。四月廿四，與中央軍會戰（戰場在河北省高碑店市新城縣南三十里）。
中央軍（李景隆部）先鋒平安之前曾跟隨朱棣出塞，熟悉朱棣戰法，設伏兵；燕軍至，平安伏兵起，挺矛衝鋒；瞿能父子也一同合擊，燕軍戰鬥失利。時中央軍（郭英部）也來到戰場，郭英在燕軍撤退的必經之路上埋地雷，燕軍撤退時損失慘重。朱棣親自率軍殿後，但夜間迷失了道路。朱棣下馬趴在地上辨別河流的方向，才分清方向，回到大營。令軍士提前用餐，準備次日決戰。
次日（四月廿五），再次合戰。瞿能、平安繞至燕軍後方，攻其後軍，得手。朱棣見狀不好，親冒矢石，令丘福衝擊李景隆中軍，不成功；朱棣率軍攻打，雙方混戰，飛矢如雨。朱棣先後換了三匹馬，射光了三筒箭，寶劍也砍斷，差點被平安、瞿能所傷。無奈之下，朱棣來到河堤上，舉起馬鞭，假裝招呼援兵，李景隆見狀果然生疑，攻勢減緩；朱高煦此時也來援救，戰事暫時緩和。
不久，瞿能再次引眾搏戰，大呼「滅燕」，形勢再次對燕軍不利。就在戰事危急時，一股旋風颳起，刮斷了李景隆的帥旗，中央軍頓時大亂。朱棣抓住機會，繞到李景隆後方放火。中央軍大敗，瞿能父子被朱高煦陣斬。郭英等向西撤退，李景隆向南撤退，輜重全部扔下，投降十萬餘人。李景隆撤回德州。
四月廿七，燕軍進攻德州。五月初七，李景隆逃往濟南。初九，燕軍進入德州，獲得大量糧食儲備。五月十五，燕軍攻濟南，李景隆殘存十餘萬兵毫無戰鬥力，大敗。李景隆逃走。燕軍遂圍濟南。
十月，朝廷召李景隆回南京。李景隆把六十萬大軍丟得一乾二淨，黃子澄、練子寧、葉希賢等上書，請求立斬之，朱允炆不聽。對於推薦了李景隆，黃子澄感到十分後悔。

相持階段

鄭村壩之戰和白溝河之戰，李景隆將朝廷的老本賠得一塌糊塗，攻守形勢逆轉。

濟南之戰

李景隆敗退後，燕軍圍濟南。右參政鐵鉉、盛庸堅守。朱棣射信入城招降，未果。
五月十七，燕軍掘開河堤，放水灌城。鐵鉉見勢不妙，決定派千人詐降，誘朱棣進城。次日，朱棣前往濟南，走到城門口時，城門預設的鐵板落下，但略快了些，只打中了其所乘馬的頭。朱棣大驚，換馬跑回。由於事出意外，斷其後路等工作沒能成功。朱棣逃回，大怒，圍城攻打三個月。
由於濟南的軍事地位極重要，若取得濟南，進可南下攻打，退可畫疆自守，故燕軍乘新勝之銳氣，志在必得。不料攻城不利，朱棣憤怒之下決定使用大砲攻城，城中不支。鐵鉉見狀，在一些木牌上寫了「高皇帝神牌」幾個字並掛在城頭，燕軍只得停止砲擊。
六月，惠帝見濟南危急，遣使求和。朱棣不聽。七月，平安進軍河間，擾亂燕軍糧道。朱棣進退不得，八月十六，撤兵回北平。盛庸、鐵鉉追擊，大敗燕軍，收復德州。濟南之戰結束。
九月初十，朱允炆升鐵鉉為山東布政使，參贊軍務，不久後升兵部尚書；封盛庸為曆城侯，平燕將軍，撤換李景隆。都督陳暉、平安為副職。中央軍重新進到德州、定州（今保定與石家莊之間）、滄州（今河北滄州）。

東昌之戰

建文二年十月，朱棣聞報中央軍北上，決定在敵軍落腳未穩時，襲取滄州，再度南下。於是明令征遼東，暗中派人在直沽（今天津市中心）修建浮橋。十月廿五，從通州折向南，晝夜兼行，十月廿七到達滄州，守將徐凱尚在築城中；燕軍僅用兩天就攻下滄州，徐凱等投降。燕軍自長蘆渡河，十一月初四到達德州。朱棣招降盛庸未果，遂南下；盛庸襲擊燕軍後軍，失敗。十一月，燕軍到達臨清；朱棣決定擾亂中央軍的糧道，遣輕騎至大名，焚其糧船。燕軍從館陶渡河（衛運河，京杭運河的一部分；當時黃河奪淮入海），先後到達東阿、東平，威脅南方，迫使盛庸南下。盛庸將計就計，決定在東昌（今山東聊城）決戰，並在陣中擺了大量火槍和毒弩。
十二月廿五，燕軍至東昌。朱棣仍然親自率軍衝鋒，先衝擊其左翼，不動；然後又衝擊其中堅，盛庸開陣將朱棣誘入，然後合圍。朱棣被重重包圍，燕軍張玉、朱能（一說還有朱高煦）分別引兵來救，朱棣死戰，終於和朱能會合，逃離戰場。大量燕軍被火器所傷，張玉被中央軍包圍，戰死。平安亦率兵趕來，與盛庸合兵作戰。次日，燕軍再次戰敗，遂北還。在擊退中央軍的阻截後，建文三年正月十六，燕軍返回北平。張玉戰死，朱棣十分悲傷。
東昌之戰，朱棣多次瀕臨險境。但是由於朱允炆有「毋使朕有殺叔父名」旨意，中央軍將士懼怕戰後反攻倒算，既不敢傷害朱棣，又難以活捉，只得放任自由；朱棣也恃此特權，單騎殿後，中央軍無可奈何。
東昌之戰是靖難以來中央軍的第一場大捷。惠帝朱允炆十分高興，建文三年（1401年）正月恢復了齊泰、黃子澄的官職（建文元年十一月兩人被罷免，但仍作為智囊留用；至是恢復齊的兵部尚書和黃的太常寺卿職務），並以東昌大捷告太廟。盛庸軍勢大振，燕軍經此敗，以後再南下，皆由徐沛，不再走山東。

夾河-藳城之戰

朱棣以東昌之敗為恥，與姚道衍商議。道衍強烈支持再次出兵。於是於建文三年二月初九，祭陣亡將士，朱棣脫下袍子燒掉，激勵軍士；二月十六，再次出師。時盛庸駐兵二十萬於德州，吳傑、平安在真定。朱棣決定趁其兩軍分隔，先破盛庸。三月二十日，燕軍探知盛庸在夾河（今河北省衡水市武邑縣附近，漳河支流）駐紮，於是駐紮在距對方四十里的地方。
三月廿二，燕軍進兵夾河。盛庸仍結下堅陣，備大量火槍強弩；朱棣利用建文的禁殺之旨，親自率幾個輕騎兵掠過敵陣偵查。盛庸不敢開槍，只得派出自己的騎兵追趕，不了了之。偵查後，朱棣率領一萬騎兵和五千步兵攻擊盛庸軍左翼，不能入。此時燕將譚淵望見已經開戰，於是主動出兵攻打。盛庸部將莊得死戰，會合盛庸軍，斬殺譚淵。朱棣、朱能等則趁南軍調動產生的混亂，趁暮色向南軍後方猛攻，斬殺莊得。盛庸穩住了陣腳，天色已晚，雙方罷兵。此戰殺傷相當，但燕軍損失了大將譚淵。
當夜，朱棣率領十餘人在盛庸營地附近露宿；次日（三月廿三）清晨，發現被中央軍包圍。朱棣再次利用禁殺之旨，引馬鳴角，穿過敵軍，揚長而去。中央軍愕然，不敢射箭。
朱棣回到營中，鼓勵眾將「兩軍相當，將勇者勝」，於是燕軍在東北方向，盛庸軍在西南方向，再次會戰。燕軍左右衝擊，盛庸堅守，雙方互有勝負。戰鬥打了三四個時辰後，突然颳起了強烈的東北風，塵埃蔽天。中央軍頂著風沙，根本沒法作戰；燕軍則乘風大呼，縱左右翼橫擊之，盛庸大敗，損失了數萬人後，退回德州。吳傑、平安引兵準備會合盛庸，聞庸已敗，退回真定。夾河之戰結束。
夾河之戰重新確立了燕軍的優勢。閏三月初四，朱允炆因夾河之敗，再次罷免齊泰、黃子澄，謫出京城，暗中令其募兵。
擊敗盛庸後，朱棣進軍真定。考慮到攻城較困難，決定誘敵出戰。於是下令軍中四出取糧，而用間諜向吳傑等透露此事。吳傑等見狀，決定襲擊之。閏三月初九，兩軍會於藳城，遂交戰。中央軍列方陣，朱棣則率精銳攻其東北角以破陣。燕將薛祿由於馬失足被擒，但奪敵刀斬數人後，奪馬逃走。此戰大量燕軍被中央軍的火槍和弓弩所傷，朱棣的帥旗被射得像刺蝟一樣；但是，由於朱允炆的禁殺之旨，朱棣本人反而沒事。
次日，復戰。在戰鬥中突然又颳起了猛烈的大風，中央軍不能支，大敗而去。燕軍四面圍攻，斬首六萬餘級。吳傑、平安等逃回真定，堅守不出。朱棣將射成刺蝟的軍旗送回北平，令世子朱高熾妥善保存，以警示後人。
從白溝河、夾河到藳城，燕軍三次得大風相助而勝，朱棣認為這是天命所在，非人力所能為。

夾河-藳城戰後的間接作戰

夾藳之戰再次使南軍損失慘重，正面戰場戰事稍緩和。中央軍改為通過談判、反間、襲擊後方等方式間接作戰。
擊敗平安後，燕軍南下，先後經過順德、廣平、大名，並駐紮於大名。諸郡縣望風而降。
朱棣聽說齊黃被貶，上書和談，表示「奸臣竄逐而其計實行，不敢撤兵」。朱允炆得書，與方孝孺討論，方孝孺表示可以藉此機會遣使回報，拖延時間，並懈怠其軍心；同時令遼東等軍隊攻其後方，以備夾攻。於是（四月）惠帝令大理寺少卿薛嵓去見朱棣，傳詔並秘密在軍中散布相關消息。薛嵓見朱棣，說「朝廷言殿下旦釋甲，暮即旋師。」朱棣表示這連三尺小兒也騙不過。薛嵓無言以對。五月初一，盛庸、吳傑、平安等分兵騷擾燕軍餉道。朱棣遣使者進京表示盛庸等不肯罷兵，必有主使。惠帝聽從方孝孺的意見，將其下獄（一說誅殺），和談破裂。
朱棣見和談破裂，決定襲擊中央軍餉道，以使德州南軍陷入困境，遂令都指揮李遠率兵六千，換穿中央軍甲冑，從濟寧南下；六月十五，瞞過中央軍到達沛縣，成功焚燒大量中央軍糧船，河中魚鱉盡死。中央軍損失糧食數百萬石，京師大震，德州陷入窘境。
七月，燕軍進攻彰德，林縣投降。七月初十，平安自真定趁虛攻北平，擾其耕牧。朱高熾固守。朱棣分兵回援；（九月十八）平安與戰不利，退回真定。
由於河北戰事不利，方孝孺想出了反間計，利用朱高熾（長子）和朱高煦（次子）的矛盾，先寫一封信給守北平的高熾，令其歸順朝廷，許以燕王之位；然後派人告訴朱棣和高煦（隨軍）世子密通朝廷，以使燕軍北還。但朱高熾得到信後，根本沒有拆開，將朝廷使者連人帶信一起送往朱棣處。反間計失敗。
七月十五，盛庸令大同守將房昭入紫荊關威脅保定，據易州西水寨以窺北平。朱棣見狀，只得回兵救援。朱棣分兵守保定，並包圍房昭的山寨。十月初二，燕軍與真定援兵和房昭軍決戰，朱棣令勇士悄悄登山，在敵後大張旗幟。中央軍山寨見狀大亂，與真定援兵一齊崩潰。房昭退回大同。
十月廿四，燕軍回到北平。之後又擊敗了襲永平的遼東敵軍。
至此，燕軍靖難已有兩年多。雖然屢戰屢勝，但因兵力不足，無法鞏固並擴張勝利，往往放棄新取之地；僅能據有北平、保定、永平三個郡。

燕軍進攻階段

建文三年冬，朱棣決定直接率兵南下，臨江一決。道衍亦支持不再與盛庸、平安等糾纏，直趨京師。

長驅南下

十二月初二，燕師復出。十二月十二，到達蠡縣（約在保定以南50公里）。建文四年（1402年）正月，先後擊敗德州的一支分隊和平安的部隊，於是燕軍南下（路線大致位於現京九鐵路和京廣鐵路之間）至館陶渡河（進山東），並長驅直入。正月十二，館陶渡河；正月十四，陷東阿；正月十五，陷東平；正月十七，陷汶上；正月廿七，陷沛縣（進江蘇）；正月三十，到達徐州。
惠帝見燕軍再次出動，三年十二月令駙馬都尉梅殷（惠帝的姑父，顧命大臣）任總兵官，鎮淮安。建文四年正月初一，將遷往蒙化的朱橚（廢周王）召回南京。命魏國公徐輝祖率兵援山東。
二月初一，何福、平安、陳暉進兵濟寧，盛庸進兵淮上。朱棣派兵襲擊中央軍餉道後，二月廿一，擊敗徐州的出戰軍隊，徐州自此閉城死守。

靈壁之戰

徐州堅守不出，朱棣遂不再理會，繼續南下。三月初一，燕軍進逼安徽宿州。三月初九，抵達渦河（今安徽蚌埠市懷遠縣以北）。平安見到燕軍一路南下，帶兵來追；但三月十四日在淝河中了朱棣所設的伏兵，只得退回宿州。三月廿三，朱棣遣將斷徐州餉道，鐵鉉等率兵圍攻，互有勝負。四月十四，燕軍進達睢水之小河，搭浮橋。次日，平安、何福領軍奪橋，雙方隔河僵持。數日後，中央軍糧盡，朱棣決定偷襲。半夜，渡河繞至敵後；但徐輝祖援兵正好趕到，四月廿二，雙方戰於齊眉山（靈壁縣西南三十里），中央軍大勝，斬燕將李斌。
中央軍再次獲得勝利，再加上暑熱，燕軍陷入窘境。四月廿三，燕軍眾將要求北返，擇地休整，朱棣不同意，說「欲渡河者左，不欲者右。」大部份人站於左側，朱棣怒。朱能這時強力支持朱棣，表示「漢高祖十戰九不勝，卒有天下」，堅定了燕軍堅持的決心。
這時，朝廷訛傳燕軍已兵敗，京師不可無良將，遂召回徐輝祖。四月廿五，考慮到在河邊不易防守，何福移營，與平安在靈壁（一作靈璧）深溝高壘作長遠之計。由於糧道被燕軍阻礙，平安親自率兵六萬護衛糧草。四月廿七，朱棣率精銳襲擊平安，將其一分為二；何福全軍出動救援，朱高煦也率伏兵出現，何福敗走。
中央軍缺糧，何福與平安決定次日（廿九）突圍而出，在淮河取得給養，號令為三聲炮響；次日，燕軍攻打靈壁墻壘，進攻信號正巧也是三聲炮響。於是中央軍以為是己方號炮，紛紛奪路而逃；燕軍趁勢進攻，中央軍全軍覆沒。靈壁之戰就此意外結束。此戰燕軍生擒了陳暉、平安、馬溥、徐真、孫成等三十七員敵將，四名內官（宦官），一百五十員朝廷大臣，獲馬二萬餘匹，降者不計其數。只有何福單騎逃走。
靈壁之戰徹底擊潰了中央軍主力，此後燕軍在長江以北再也沒有遇到像樣的抵抗。一千六百年前決定楚漢之爭勝敗的垓下之戰就發生在靈壁附近，可謂歷史的巧合。
按照齊黃的策劃，曾令遼東派兵南下欲與鐵鉉會師濟南，但五月初一在直沽被燕軍擊潰。

渡江進京

靈璧之戰後，燕軍向東南方向直線前進。五月初七下泗州，朱棣謁祖陵。盛庸在淮河設下防線阻礙燕軍渡河，朱棣在嘗試取道淮安、鳳陽受阻後，遣朱能、丘福率士兵數百人繞道上游乘漁船渡河，五月初九從後方突襲盛庸，盛庸敗走。燕軍遂克盱眙。
五月十一，燕軍向揚州方向前進，五月十七到達天長（揚州西北50公里）。守揚州的監察御史王彬本想抵抗，但屬下反叛，趁其沐浴時綁縛之。五月十八，揚州不戰而降。隨後高郵歸降。
揚州失陷，金陵震動。朱允炆驚慌不已，與方孝孺商議後，先後定下如下幾個救急方法：下罪己詔；號召天下勤王；派練子寧、黃觀、王叔英等外出募兵；召回被貶黜的齊泰、黃子澄；遣人許以割地求和，拖延時間。方孝孺的幾個辦法中，只有兩個起到了效果：齊黃被召回（外出募兵，未進京），蘇州、寧波、徽州等地知府先後率兵進京師。
五月廿二，朱允炆遣慶成郡主（朱元璋的侄女、朱棣的堂姐）與朱棣談判，表示願意割地。朱棣說「此奸臣欲姑緩我，以俟遠方之兵耳。」郡主無言以對，遂返。
六月初一，燕軍準備從浦子口渡江，但遇到了盛庸最後的抵抗。燕軍戰不利，朱棣打算議和北還。此時朱高煦引兵來援，朱棣非常高興，說「努力罷！世子常常生病啊。」暗示朱高煦有機會取得儲君寶座，於是朱高煦大受鼓舞，率眾殊死戰，擊敗盛庸。隨後中央軍的一支水軍部隊降燕，燕軍遂於六月初三自瓜洲渡江，並再次擊敗退守此地的盛庸。六月初六，燕軍至鎮江，守將率城投降。
六月初八，燕軍駐紮於龍潭（距京師金陵東約30公里），朝廷大震。朱允炆徘徊殿間，召方孝孺問計。有人提議逃往內地以圖興復，方孝孺表示城中尚有二十萬兵，應堅守待援；即使真戰敗，國君為社稷而死，是理所應當的。可以再派大臣、在京諸王前往談判以拖延時間。於是六月初九，派李景隆、茹瑺等見朱棣，再次談判；朱棣表示割地無名，只要奸臣。六月初十，遣谷王朱橞（建文元年逃回京城）、安王朱楹等第三次前往談判，無果。
六月十二，外出募兵的大臣們仍未返回，朱允炆只得派在京諸王和武臣們守衛各門。時左都督徐增壽（徐達子，輝祖弟）謀內應，被一群文官圍毆。次日（1402年7月13日），燕軍抵金陵。徐增壽作內應，事敗，被朱允炆親自誅殺於左順門。守衛金川門（位於南京城西北面）的朱橞和李景隆望見朱棣麾蓋，開門迎降，是為金川門之變。
燕軍攻入金陵，江山易主。靖難之役結束。建文四年（洪武三十五年）六月十七日，朱棣登基即皇帝位，是為明太宗（後改成祖）。

惠帝失蹤

燕軍進南京，朱允炆見事不可為，遂在皇宮放火。馬皇后死於大火，朱允炆本人及太子朱文奎不知所終；此後其下落成為謎團。
朱棣入城，派人找出馬皇后的屍體，指認其為朱允炆，並執其手哭「傻小子，何苦如此」，隨後六月廿日以天子禮葬之，造成惠帝已死的假象。

朱棣稱帝

南京陷落後，朱棣入城。翰林院編修楊榮迎於馬首，說：「殿下先謁陵乎？先即位乎？」點醒朱棣。次日（建文四年六月十四）起，諸王及文武群臣多次上表勸進，朱棣不允。數日後（六月十七），朱棣謁孝陵，並於當日即皇帝位是為明太宗（後改為成祖）。重建奉先殿（舊殿被朱允炆所焚），刻玉璽。同年十一月十三日，封王妃徐氏為皇后。
朱棣不承認建文年號，七月初一（一說六月十八），將建文元、二、三、四年改為洪武三十二至三十五年，次年改為永樂元年。凡建文年間貶斥的官員，一律恢復職務（如靖難初期因離間被貶的江陰侯吳高被再次起用，守大同）；建文年間的各項改革一律取消；建文年間制定的各項法律規定，凡與太祖相悖的，一律廢除。但一些有利於民生的規定也被廢除，如建文二年下令減輕洪武年間浙西一帶的極重的田賦，至此又變重。

明朝宗室的待遇變化

朱棣稱帝後，六月十八，恢復了周王朱橚、齊王朱榑的爵位。隨後恢復代王朱桂、岷王朱楩的爵位。永樂元年正月，令周、齊、代、岷四王歸藩。
六月廿六，朱棣取消朱標的明興宗廟號，重新稱懿文太子，呂太后復稱懿文太子妃；七月十二，將朱允炆的三個弟弟由親王降為郡王；十一月以不能匡正建文帝為由將朱允熥、朱允熞廢為庶人軟禁鳳陽，朱允熙不久暴卒。朱允炆次子朱文圭亦被廢為「建庶人」，軟禁鳳陽廣安宮，55年後才和朱允熥後人一同被明英宗釋放。
朱棣因為反對建文帝削藩而起兵，爲了爭取諸王擁戴，即位後立即恢復了被削的藩王，並加以賞賜，甚至改變祖制給予宗室更高的品級。如按照洪武年間規定，鎮國將軍（郡王之子）為三品，輔國將軍四品，奉國將軍五品，鎮國中尉六品，輔國中尉七品，奉國中尉八品。而成祖「遂加鎮國將軍從一品，輔國將軍從二品，奉國將軍從三品，鎮國中尉從四品，輔國中尉從五品，奉國中尉從六品」。
然而由於朱棣自己是武裝奪權的，爲了保證中央政權穩固，他即位後先將諸邊塞王改封於內地，然後逐漸解除諸王的兵權：永樂元年削代王護衛及官屬；永樂四年削齊王護衛及官屬，不久廢為庶人；永樂六年削岷王護衛及官屬；永樂十年削遼王護衛；永樂十五年廢谷王為庶人；永樂十九年周王見勢不妙，主動獻還護衛。洪武朝帶兵的十三位親王，永樂朝削去了六個護衛。與此同時，大封靖難功臣，將大批有經驗的武臣保留下來，加強中央政權，從根本上改變了中央和諸藩的軍事力量對比。
雖然朱棣實現了朱允炆當年的目的，但只解決了眼前的問題，並沒有改變祖制；其子漢王朱高煦和趙王朱高燧仍然設立了三護衛。宣德元年，朱高煦叛亂，再次證明親王典兵不是辦法。親征平定叛亂後，明宣宗利用其威望，迫使絕大部份藩王交出了護衛，並從各個方面對宗室加以控制。此後，宗室與中央的矛盾逐漸由軍事上對政權的威脅轉變為大量增加的俸祿對中央財政的壓力。

遷都北京和割讓大寧

由於洪武年間，北方的防務多由幾位邊王（如朱棣、朱權）負責，而靖難後朱棣徙諸邊王於內地，導致華北防務空虛；又由於有唐朝之守外虛內、宋朝之守內虛外的教訓，故在軍事上，定都金陵（南京）、遙控將領守衛邊界的風險很大；「天子守國門」則可以解決這一問題。另一方面，由於南京的建文帝勢力影響較大（很多建文遺臣始終不順服朱棣統治），出於在政治上考慮，作為朱棣大本營的北平更加適合作為京師，再加上蒙古的軍事威脅，故考慮各種因素後，朱棣決定遷都北京。
永樂元年（1403年）冬二月，朱棣改北平為北京，名順天府；隨後遷徙各地富民於北京。稱北京為行在。永樂年間，遷都北京的準備一直在進行，如建北京城、建宮殿、疏通漕運等；直到永樂十八年（1420年），北京皇宮和北京城建成，遂下令遷都，以南京作為留都。自此，除1928年至1949年期間國民政府定都南京外，北京一直是中國的首都，政治中心從此北移。
朱棣在靖難初始時曾將大寧的全部軍力（包括朵顏三衛）納入麾下，朵顏三衛在後續作戰中起到了重要作用；故朱棣稱帝後，將寧王封於南昌，永樂元年三月把大寧封賞給朵顏三衛作酬勞。
大寧位於今日遼、蒙、冀三省交界處，遼東-薊州-宣府弓形的中心，軍事地位相當重要；洪武十三年（1380年）收復，並建立衛所，至此廢除。大寧可以作為遼東、薊州、宣府等地的防衛前哨，並影響其防衛效果；失去大寧，從關內到遼東就只能走山海關過錦州。此後（尤其是土木之變後），薊遼的戰事不斷。尤其是正統土木之變與嘉靖庚戌之變，蒙古人都從大寧入寇。割大寧之事，多為後人所詬病。

設立內閣、特務統治、重用宦官

爲了更有效率地處理國務，洪武三十五年（1402年）八月初一，朱棣令解縉、黃淮入直文淵閣，預機務。隨後擴充內閣至七人。從此內閣開始在明朝政治中發揮越來越重要的作用，甚至清朝仍沿用此制度。
另一方面，由於朱棣是造反稱帝的，對大臣有所猜忌，故恢復了洪武年間廢除的錦衣衛，重新開始實施明朝的特務統治；指揮使紀綱成為永樂朝一大權奸。隨後，永樂十八年，朱棣又設立了東廠，令親信太監掌權，加強特務統治的同時提高了宦官的地位。有明一代，特務統治幾乎貫穿始終，成為一大特點。
由於靖難之役時，朱棣得到了很多來自宦官的幫助，故其即位後改變了太祖禁止宦官干政的政策，開始重用宦官。一方面，明朝出現了鄭和等著名的優秀宦官，下西洋開展國際交流；另一方面，由於司禮監、東廠等宦官掌權的部門地位提高，且地方鎮守、監督採辦等重要工作皆由宦官擔任（不全為朱棣設置），埋下了日後宦官禍國的種子。

對地方經濟的影響

靖難之役涉及整個華北和華東地區，反復的拉鋸戰使得淮河以北的社會經濟遭到極大的破壞。燕京以南有大量地區的平民遭到戰事的蹂躪，傷亡慘重。朱棣登基後，減免了河北、河南、山東等曾為戰場的省份及其它省份的賦稅，以休養生息。

文化

明成祖除了誅殺誓死效忠建文帝的大臣外，還下令對殉難諸臣以及一切與建文帝有關的文字著作一概交出燒毀，私自收藏者殺，被燒毀的著作包括如方孝孺所著的《周禮考次》、《大易枝辭》、《帝王基命錄》、《文統》等。