燕王棣遣使入京师金陵奏事,使者被齐泰等审讯,被迫供出燕王棣的异状,于是朝廷下密旨,令张昺、谢贵逮捕燕王府的官属,张信逮捕燕王棣。但张信与其母亲讨论之后,将此事告知燕王 。于是燕王棣和姚广孝等进行举兵的谋划,令张玉、朱能将八百勇士带入燕王府中潜伏,以待变故。 张昺、谢贵得到建文帝密诏后,带兵包围了燕王府。燕王棣假意将官属全部捆缚,请二人进府查验。二人进府后,朱棣派出府内死士将其擒获,并连同府内叛变的葛诚、卢振一同处决。当日夜里,燕王棣攻下北平九门,遂控制北平城。
燕军控制北平后,依次通州主动归附;攻破蓟州,遵化、密云归附;攻破居庸关;攻破怀来,擒杀宋忠等;永平府归附。为防止大宁军队从松亭关偷袭北平,用反间计使松亭关内讧,守将卜万下狱。至此,北平周围全部扫清。燕军兵力增至数万 。
燕军攻破怀来后,由于领地相距太近,谷王橞逃离封地宣府奔金陵。
八月,齐泰等顾虑辽王、宁王帮助燕王,建议召还京师;辽王从海路返京,而宁王不从,遂削宁王护卫。宋忠失败后,部将陈质退守大同。代王本欲起兵呼应朱棣,被陈质所控制,未果。
建文元年七月,燕王棣反书至南京,建文帝祭告太庙,削燕王棣宗室属籍,废为庶人。决定起兵讨燕。在真定设置平燕布政司。
燕王棣初起兵时,燕军只据北平一隅之地,势小力弱,朝廷则在各方面都占压倒性优势。所以战争初期,朝廷拟以优势兵力,分进合击,将燕军围歼于北平。燕王棣采取内线作战,以部将郭资戍守北平,迅速即攻取了北平以北的居庸关、怀来、密云和以东的蓟州、遵化、永平等州县,扫平了北平的外围,排除了后顾之忧,便于从容对付朝廷的问罪之师。经过先帝大肆杀戮功臣宿将之后,朝廷也无将可用,建文帝只好起用年近古稀的幸存老将长兴侯耿炳文为大将军,驸马都尉李坚为左副将军,都督宁忠为右副将军,率军十三万伐燕,数路并进,号称百万大军,同时传檄山东、河南、山西三省供给军饷。
耿炳文率军在八月十二到达真定,并分兵于河间、鄚州、雄县,为犄角之势。在经过观察后,八月十五日,燕军趁中秋夜敌军不备,偷袭雄县;成功后又利用伏击击败了鄚州的援兵,遂攻克鄚州,收编剩余的部队。
耿炳文部将张保来降,告知燕王棣耿炳文的部队分驻滹沱河两岸,于是燕王让他回去告诉耿炳文“雄县、鄚州大败,燕兵将至”,以打击其士气,并使耿炳文合兵一处,便于一举击溃。耿炳文果然将南岸的兵调过河。
八月二十四日,燕军到达无极县。从樵夫和南军被俘士兵处得知敌情,于是燕军发动决战。
建文元年八月,南军师至河北滹沱河地区。燕王在中秋夜乘南军饮酒作乐之机,突破雄县,尽克南军的先头部队。继而又于滹沱河北岸大败南军的主力部队。耿炳文率残部不到十万人在真定坚守不出,燕军攻城三天不克。
八月二十九日,燕军返回北平。顾成降燕之后,留在北平协助燕世子朱高炽守城。
建文帝听到耿炳文军败,根据黄子澄的推荐,任曹国公李文忠之子李景隆为大将军,代替耿炳文对燕军作战。又令辽东江阴侯吴高等领兵围攻永平。燕王棣留下少量兵将坚守北平,自已亲统大军救援永平。
李景隆本是纨绔子弟,素不知兵,“寡谋而骄,色厉而馁”。
建文元年九月,李景隆至山东德州,收集耿炳文的溃散兵将,并调各路军马,共计五十万,进抵河间驻扎。当燕王棣侦知李景隆军中的部署后,笑着说,“兵法有五败,李景隆全犯了,其兵必败无疑”。这就是政令不修,上下离心;兵将不适北平霜雪气候,粮草不足;不计险易,深入趋利;求胜心切,刚愎自用,但智信不足,仁勇俱无;所部尽是乌合之众,且不团结。为了引诱南军深入,燕王棣决计姚广孝协助世子朱高炽留守北平,自已亲率大军去援救被辽东军进攻的永平,并告诫朱高炽说:“李景隆来,只宜坚守,不能出战。”燕王还撤去了卢沟桥的守兵。
燕王棣这一招果然灵验,李景隆听说燕王棣率军赴援永平,就率师于建文元年十月直趋北平城下。经过卢沟桥时见无守兵,禁不住欢喜,说:“不守此桥,我看燕王是无能为力了。”这时朱高炽在北平城内严密部署,拼死守卫。李景隆则号令不严,指挥失当,几次攻城,皆被击退。南军都督瞿能曾率千余精骑,杀入张掖门,但后援不至,只好停止进攻。又因李景隆贪功,要瞿能等待大部队一起进攻,错过了时机。燕军则因此得到喘息,连夜往城墙上泼水,天冷结冰,待到次日,南军也无法攀城进攻了。吴高怯懦,不敢应战,退保山海关。燕王棣解救永平之后,率师直趋大宁。
建文元年九月初一,江阴侯吴高率辽东兵攻打永平郡,故燕王棣趁李景隆踌躇不决之际,九月十九日前往救援。
九月二十五日,燕王棣击败吴高,并决定趁势偷袭十七弟宁王权的藩地大宁;另一方面利而诱之,将南军引至“空城”北平下。
九月二十八日,燕王棣率众出师。传信给燕世子朱高炽,令其坚守北平城。
十月初六日,燕军经小路到达大宁城下。燕王棣单骑入城,见宁王权,哭诉自已无路可走,向宁王权求救,希望能向朝廷上书,谢罪免死。宁王权相信并收留了他。在居大宁期间,燕王棣令手下吏士入城结交并贿赂大宁的军官等。
十月十三日,燕王棣提出告辞,宁王权在郊外送行;但宁王来到郊外后,伏兵尽起,大宁军纷纷叛变,归附燕王。于是宁王与宁王妃、宁王世子等一同随燕王棣前往北平,而大宁的全部军队都被燕王收编。大宁成为空城,燕王棣实力大增。
听说燕王棣率精锐征大宁,李景隆引军攻北平。南军在郑村坝扎营,筑垒同攻北平九门。燕王世子朱高炽坚守。朱高炽遣人夜间偷袭南军大营,获得了一定的喘息时间;南军攻城急时,城中妇女也上城头向下投掷瓦石。南军唯一一次获胜的机会是都督瞿能攻张掖门,几乎要攻下时,因被李景隆所忌,只得停止。功败垂成。农历十月,北平甚是寒冷,于是燕军守城部队夜里汲水浇于城墙上,次日城墙结冰,南军无法攀登。南军因天寒地冻,战斗力骤降,攻势自此受阻。
建文元年十月十九日,燕军在会州整编,分立五军(中、前、左、右、后)。
十月二十一日,燕军入松亭关。
十一月初五日,燕军渡白河,并打败李景隆的哨探陈晖部队万余人。当天,与李景隆大军在郑村坝会战。燕军左右冲击,连破南军七营,李景隆大败。当夜,李景隆见战事不利,令郑村坝所有军队轻装撤退。数十万人的辎重全部留给了燕军。但李景隆走得匆忙,没有通知围攻北平城的南军军队,于是燕军轻易击溃北平城下的南军,获得其物资。李景隆率军撤回德州,郑村坝之战结束。此战南军丧师十余万人。
建文元年十一月初九日,燕王棣回到北平城,因为之前上书没有回信,再次上书朝廷,陈述齐泰、黄子澄构陷宗藩的罪过。建文帝没有回应。
十二月,朱棣用反间计令辽东守将吴高被削爵贬黜,消除东北方向的后顾之忧。由于李景隆准备等来年开春再北上攻燕,燕王棣决定攻打山西大同,以使南军疲于奔命。
十二月十九日,燕王棣出师攻大同。
十二月二十四日,燕军抵达广昌,守将杨宗投降。
建文二年正月初一,燕军抵达蔚州,明军守将王忠、李远投降燕军。
二月初二日,燕军攻打大同。由于大同是代王的封地且军事地位极重要,李景隆不得不救援。待李景隆走出紫荆关后,燕军从居庸关返回北平。南军在冰天雪地中白跑一趟,兵力、装备大量损失,士气受到重创。
建文二年二月二十八日,李景隆给燕王棣写信,请求暂时停战。燕王回信索要齐泰、黄子澄等。除了使南军白跑了一个月外,燕军在本次伐大同时意外遇到了从蒙古来降的军队,收编之。 此外,保定府于建文二年二月降燕。
建文二年四月,李景隆从山东德州,郭英、吴杰等从真定誓师北伐燕军,目标是白沟河。兵力增至六十万,燕军亦出。
四月二十日,燕军渡过玉马河,驻于苏家桥。
四月二十四日,燕军与南军会战。
南军先锋平安之前曾跟随燕王棣出塞,熟悉燕王战法,设伏兵。燕军到达之后,平安伏兵起,挺矛冲锋;瞿能父子也一同合击,燕军战斗失利。当时南军郭英部也来到战场,郭英在燕军撤退的必经之路上埋地雷,燕军撤退时损失惨重。燕王棣亲自率军垫后,但夜间迷失了道路。燕王下马趴在地上辨别河流的方向,才分清方向,回到大营。令军士提前用餐,准备次日决战。次日,燕军与南军再次合战。瞿能、平安绕至燕军后方,攻其后军得手。燕王棣见状不好,亲冒矢石,令丘福冲击李景隆中军,不成功;燕王率军攻打,双方混战,飞矢如雨。燕王棣先后换了三匹马,射光了三筒箭,宝剑也砍断,差点被平安、瞿能所伤。无奈之下来到河堤上,举起马鞭,假装招呼援兵,李景隆见状果然生疑,攻势减缓;朱高煦此时也来援救,战事暂时缓和。
不久,瞿能再次引众搏战,大呼“灭燕”,形势再次对燕军不利。就在战事危急时,一股旋风刮起,刮断了李景隆的帅旗,南军顿时大乱。燕王棣抓住机会,绕到李景隆后方放火。南军大败,瞿能父子被朱高煦阵斩。郭英等向西撤退,李景隆向南撤退,辎重全部扔下,投降十万余人。李景隆撤回德州。
四月二十七日,燕军进攻德州。
五月初七,李景隆逃往济南。
初九,燕军进入德州,获得大量粮食储备。
五月十五,燕军攻济南,李景隆残存十余万兵毫无战斗力,大败。李景隆逃走。燕军遂围济南。
十月,朝廷召李景隆回南京。李景隆把六十万大军丢得一干二净,黄子澄、练子宁、叶希贤等上书,请求立斩之,建文帝不听。对于推荐了李景隆,黄子澄感到十分后悔。
李景隆在几个月的时间内一败再败,建文帝撤免了他的大将军职务,建文帝采黄子澄之谋,遣使议和以求缓攻,又任命盛庸为平燕将军,代李景隆统兵。盛庸屯兵德州,以遏燕军南下。李景隆败退后,燕军围济南。右参政铁铉、盛庸坚守。燕王棣射信入城招降,未果。
建文二年五月十七日,燕军掘开河堤,放水灌城。铁铉见势不妙,决定派千人诈降,诱燕王棣进城。次日,燕王前往济南,走到城门口时,城门预设的铁板落下,但略快了些,只打中了其所乘马的头。燕王棣大惊,换马跑回。由于事出意外,断其后路等工作没能成功。燕王棣逃回,大怒,围城攻打三个月。
由于济南的军事地位极重要,若取得济南,进可南下攻打,退可画疆自守,故燕军乘新胜之锐气,志在必得。不料攻城不利,燕王棣愤怒之下决定使用大炮攻城,城中不支。铁铉见状,在一些木牌上写了“高皇帝神牌”几个字并挂在城头,燕军只得停止炮击。
六月,建文帝见济南危急,遣使求和。燕王棣不听。
七月,平安进军河间,扰乱燕军粮道。燕王棣进退不得。
八月十六,燕王棣撤兵回北平。盛庸、铁铉追击,大败燕军,收复德州,济南之战结束。
九月初十,建文帝升铁铉为山东布政使,参赞军务,不久后升兵部尚书;封盛庸为历城侯,平燕将军,撤换李景隆。都督陈晖、平安为副职。南军重新进到德州、定州、沧州。