处得知敌情,于是燕军发动决战。
建文元年(1399年)八月,南军师至河北滹沱河地区。
燕王在中秋夜乘南军饮酒作乐之机,突破雄县,尽克南军的先头部队。
继而又于滹沱河北岸大败南军的主力部队。
耿炳文率残部不到十万人在真定坚守不出,燕军攻城三天不克。
八月二十九日,燕军返回北平。顾成降燕之后,留在北平协助燕世子朱高炽守城。
换帅李景隆
建文帝听到耿炳文军败,根据黄子澄的推荐,任曹国公李文忠之子李景隆为大将军,代替耿炳文对燕军作战。
又令辽东江阴侯吴高等领兵围攻永平(今河北昌黎西北)。
朱棣留下少量兵将坚守北平,自己亲统大军救援永平。
李景隆本是纨绔子弟,素不知兵,“寡谋而骄,色厉而馁”。
建文元年(1399年)九月,李景隆至山东德州,收集耿炳文的溃散兵将,并调各路军马,共计50万,进抵河间驻扎。
当朱棣侦知李景隆军中的部署后,笑着说,兵法有五败,李景隆全犯了,其兵必败无疑,这就是政令不修,上下离心;兵将不适北平霜雪气候,粮草不足;不计险易,深入趋利;求胜心切,刚愎自用,但智信不足,仁勇俱无;所部尽是乌合之众,且不团结。
为了引诱南军深入,朱棣决计姚广孝协助世子朱高炽留守北平,自己亲率大军去援救被辽东军进攻的永平,并告诫朱高炽说:“李景隆来,只宜坚守,不能出战。”
朱棣还撤去了卢沟桥的守兵。
朱棣这一招果然灵验,李景隆听说朱棣率军赴援永平,就率师于建文元年(1399年)十月直趋北平城下。
经过卢沟桥时见无守兵,禁不住欢喜,说:“不守此桥,我看朱棣是无能为力了。”
这时朱高炽在北平城内严密部署,拼死守卫。
李景隆则号令不严,指挥失当,几次攻城,皆被击退。南军都督瞿能曾率千余精骑,杀入张掖门,但后援不至,只好停止进攻。
又因李景隆贪功,要瞿能等待大部队一起进攻,错过了时机。
燕军则因此得到喘息,连夜往城墙上泼水,天冷结冰,待到次日,南军也无法攀城进攻了。
吴高怯懦,不敢应战,退保山海关。
朱棣解救永平之后,率师直趋大宁(今内蒙古宁城西)。
燕军偷袭大宁
建文元年(1399年)九月初一,江阴侯吴高率辽东兵攻打永平郡,故朱棣趁李景隆踌躇不决之际,九月十九日前往救援。
九月二十五日,朱棣击败吴高,并决定趁势偷袭十七弟宁王朱权的藩地大宁(今内蒙古宁城);另一方面利而诱之,将南军引至“空城”北平下。
九月二十八日,朱棣率众出师。传信给燕世子朱高炽,令其坚守北平城。
十月初六日,燕军经小路到达大宁城下。朱棣单骑入城(一说击败守将房宽后入城),见宁王朱权,哭诉自己无路可走,向朱权求救,希望能向朝廷上书,谢罪免死。
朱权相信并收留了他。
在居大宁期间,朱棣令手下吏士入城结交并贿赂大宁的军官等。
十月十三日,朱棣提出告辞,朱权在郊外送行;但朱权来到郊外后,伏兵尽起,大宁军纷纷叛变,归附朱棣。
于是朱权与宁王妃、宁王世子等一同随朱棣前往北平,而大宁的全部军队都被朱棣收编。
大宁成为空城,朱棣实力大增。
听说燕王朱棣率精锐征大宁,李景隆引军攻北平。
南军在郑村坝(今大兴以东二十里)扎营,筑垒同攻北平九门。
燕王世子朱高炽坚守。朱高炽遣人夜间偷袭南军大营,获得了一定的喘息时间;南军攻城急时,城中妇女也上城头向下投掷瓦石。
南军唯一一次获胜的机会是都督瞿能攻张掖门(一说彰义门,据《方舆纪要》,彰义门即广安门;存疑),几乎要攻下时,因被李景隆所忌,只得停止。
功败垂成。农历十月北平甚是寒冷,于是燕军守城部队夜里汲水浇于城墙上,次日城墙结冰,南军无法攀登。
南军因天寒地冻,战斗力骤降,攻势自此受阻。
建文四年(1402年)六月十三,燕军抵金陵。
徐增寿作内应,事败,被朱允炆亲自诛杀于左顺门。
守卫金川门(位于南京城西北面)的朱橞和李景隆望见朱棣麾盖,开门迎降,是为金川门之变。燕军攻入金陵,江山易主。
靖难之役结束。
战争虽结束,与此相关的历史却在发展。
燕王进京后,宫中起火,建文帝下落不明。有的说建文帝于宫中自焚而死,或云建文帝由地道出亡,落发为僧,云游天下,传说他于正统朝入居宫中,寿年而终。