张信接到密旨后左右为难,他觉得燕王气度非凡,且实力雄厚,有可能成大气候,不能伤害他,可眼下又不敢抗拒朝廷的命令,否则,要遭灭门之祸。在效忠燕王还是效忠朝廷这二者之间,他不知所措,犹豫不决。他母亲见他一连几日坐卧不安的样子,便亲问其中缘由。张信把密旨内容告诉了母亲,母亲听了大惊,劝告张信说:“我们曾受过燕王的恩惠,你不能去抓燕王,况且我听说燕王命当君临天下,这样的人,岂是你一个人能抓得了的吗?”张信听了以后,便决定倒戈,投靠燕王。于是,他来到燕王府求见,可是接连三次都被门人以燕王病重为借口而拒之门外。第四次,张信换上便装,改乘妇人的座车,混进了燕王府,终于见到了燕王,说有密事相告。燕王不知张信的底细,因此故意装着中风后遗症的模样,二目痴呆,嘴唇乱抖,口涎直流。张信拜倒在床下,一边叩头一边说:“殿下不必如此,如有难处就告诉我吧!”燕王假装糊涂地说:“你在说什么啊?”张信虔诚地说:“殿下不理解我的一片苦心,故意瞒着我,可情况十分紧急,我只得将实情相告:皇帝已下命令派臣来捉大王,如果大王真的有病,我就只好奉命行事,把大王押到南京,否则,是反是逃,还请大王早做决定。”话刚一落音,只见燕王猛然从床上跃起,向张信跪拜道:“恩人!恩人!使我们一家人得以再生就全仗你了!”张信忙扶起燕王,将朝廷密旨和盘托出,催促燕王早做准备。燕王立即派护卫指挥张玉、朱能等人率领亲兵八百守卫燕王府,并召见道衍和尚一同商量应急对策。正在这时,风雨大作,屋檐上绿色琉璃瓦纷纷坠落,燕王见如此恶兆,心情顿时沉重下来,觉得这是神灵震怒,上天不容。可道衍见此却哈哈大笑起来,燕王骂他:“秃和尚,有什么好笑的!”道衍笑着说:“殿下没听说过吗,飞龙在天,必有风雨相从。檐瓦坠落,正是上天要给殿下换黄屋(皇宫)去住啊!”燕王听了转忧为喜,更加坚定了起兵的决心。
这时,建文帝在南京又下圣旨:逮捕燕王府的官员,将燕王废为庶民,并将燕王及其儿子押送京都,但绝不准伤害燕王。北平左布政使张莴和都指挥使谢贵接到诏令后,率北平的全部人马将燕王府包围得严严实实。他们惟恐伤害燕王,不敢攻打燕王府,只是虚张声势,将诏书绑在箭上,射人府中。从六月下旬至七月中旬,双方就这样僵持着。正当燕王愁眉不展之时,朱能献计说:“只要能将张莴和谢贵擒杀,其余的人将不战自溃。”燕王大喜,订下计策,埋下伏兵,大门洞开,宣布投降,诱使张、谢二人入府捉人。
张昺、谢贵听说此事疑虑重重。这时,燕王派来使臣催促他们去府中验收已绑缚停当的一百多名犯人。张、谢二人带上亲兵来到燕王府。当走到二门时,他们跟随的亲兵被婉言阻于门外,张、谢二人迟疑不决,不想进去,但又怕错过时机无法交旨,他们一想到府外有自己的数万人马,便壮胆进了燕王府。他们来到殿上,燕王笑脸相迎,还命侍女献上西瓜来招待。张、谢二人不敢久留,请燕王即刻出宫,并要带走一行犯人。燕王大怒,将手中西瓜摔在地上,埋伏在两厢的士兵听见信号突然冲出,将张、谢二人拿下,不容分说就割下头来。张玉、朱能用竹竿挑着两个人的首级登上墙头大喊:“张昺、谢贵假传圣旨,欲害燕王,已被斩首示众,被蒙蔽的官兵散去者无罪,否则格杀勿论!”包围燕王府的官兵一见将领丧命,顿时大乱,都作鸟兽散。燕王调兵遣将,亲率大军进攻九门,因事出仓促,九门守军毫无防备,且城内许多将士,原受燕王统帅,这时纷纷倒戈投诚,不到天明,北平城便落下燕王的手中。为名正言顺,燕王朱棣传檄天下,檄文援引太祖《祖训》“朝无正臣,内有奸逆,必举兵诛讨,以清君侧之恶”的规定,以诛讨奸臣齐泰、黄子澄为名,宣布举兵北平,去建文帝号,仍称洪武,并声称“法周公辅成王”,号称“靖难”,进军南京。因此史称“靖难之役”。一场争夺皇位的战争终于拉开了它的帷幕。
这时,屯驻在开平的都督宋忠手中有三万人马和燕王的旧部,他听说北平失陷,却不敢增援,反而退守怀来。居庸关守将余瑱孤军与燕王作战,最后弃关败走,也逃到怀来,燕王紧追不舍。宋忠为激励燕王旧部的士气,就枉称他们的家属都已被燕王屠戮,让他们打前锋。他们摩拳擦掌,誓要报仇雪恨。燕王探知消息,就派这些将士的亲属打先锋。结果,两军阵前,不是父子,就是兄弟,呼兄唤弟、招爹叫儿之声乱成一团。宋忠的骗局被揭穿了,恼怒的前军将士纷纷哗变,向后军冲去,顿时,官军的阵脚大乱,燕王乘机率军掩杀过来,官军溃败,宋忠与余瑱被俘处死。燕王首战告捷,诸城震动严守将望风归附。燕王迅速占领了怀来、密云、通州、蓟州、遵化、永平、开平、龙门、上谷、云中等城,从而解除了后顾之忧,全力对付朝廷。
京中接到败报,朝廷震惊,可建文帝正锐意文治,并不以燕王为忧。黄子澄说:“北兵一向强悍,如不早些抗御,恐怕整个河北都要丢失了。”建文帝这才派年近古稀的老将耿炳文为大将军,率三十万大军北伐。建文帝对此次伐燕很不放心,再三嘱咐诸侍:“一门之内,自逞兵威,实属不祥,你们与燕王对垒,一定要体谅我的心意,不要使朕有杀叔之名。”八月中旬,耿炳文与燕王在河北真定(今河北正定)展开大战,官军多于燕军十倍,根本不把燕军放在眼里。燕军趁官军轻敌,在中秋之夜以轻骑偷袭了耿炳文的先头部队,全歼了九千先锋军,获战马八千多匹。燕王又在官军渡滹沱河之际,率精骑猛攻,官军全线溃退。耿炳文率残部仓惶逃入真定城,固守待援。朝廷第一次北伐宣告失败。真定之役,燕王以少胜多,表现出大将风度和元首气质,燕军士气大振。
消息传到了京都,建文帝这才有些心慌,黄子澄认为耿炳文老朽无用,建议改派曹国公李景隆代替他。齐泰则认为,李景隆只能夸夸其谈,并无真本事。建文帝觉得李景隆是天国功臣李文忠的儿子,身材魁伟,风度优雅,博览群书,又曾捉住过周王,因此就封李景隆为将军出征,并亲赐象征至高无上之权的斧钺,还在江上摆酒饯行,寄予厚望。李景隆受此殊遇,飘飘然忘乎所以,率五十万大军开始了北伐。
燕王听说李景隆挂帅,不禁大喜道:“李九江(李景隆的小名)不过是膏粱弟子,骄横少谋,色厉而内荏,从没有打过什么大仗,让他统帅五十万大军,这不是自取灭亡吗!”于是,他率兵出援被辽东兵包围着的永平,诱使李景隆攻打北平。李景隆果然中计,他一听说燕王已出城,便贪功冒进,企图一举占领北平。燕王世子高炽按父亲的计策,筑垒九门,闭门不出。李景隆不惜代价,逼迫士卒轮番攻城,无奈北平城防坚固,将士齐心,连妇女儿童都来抛掷砖瓦,官军攻城没有进展,而城下的尸首却堆积如山。十一月的天气十分寒冷,高炽又采用冰防战术,让将士们在城墙上浇水,翌晨结水成冰。李景隆望着冰城一筹莫展,朱高炽以万人抗拒官军五十万,北平得以保全。
与此同时,燕王奔袭永平,敌斩数千,敌将吴高弃了辎重,退守山海关。燕王移师东北,潜袭大宁(今内蒙宁城)。宁王朱权是朱元璋第十七子,“带甲八万,革车六千”,尤其是他精锐的鞑靼兵个个骁勇善战,实力超过燕王朱棣。燕王将大部队驻扎在城外隐蔽,然后单骑人城见弟弟朱权,求他写信给朝廷请求赦免,朱权慷然允诺。兄弟俩彻夜长谈,其乐融融。燕王临走,宁王送出郊外置酒饯行,燕王掷杯于地,伏兵齐出,绑架了宁王朱权,占领了宁城,吞并了宁王的全部人马,随后,大军火速回师北平。
李景隆攻城一个多月,师劳兵疲,缺衣少粮,不少士兵冻死饿死,士气低落。而胜利回师北平东郑村坝(今北京通州)的燕王部队斗志高昂,他们渡过永定河勇猛地扑向李景隆大营,守北平城的将士也从城内鼓噪而出,内外夹攻,李景隆大败,狼狈逃向德州。第二次北伐又以失败而告终。力荐李景隆为帅的黄子澄探听李景隆大败,害怕承担荐人不当的罪责,便派密使指示李景隆隐匿不报,只说打了胜仗,因天气寒冷,暂住德州,等开春再战。建文帝被黄子澄瞒天过海的把戏所欺骗,加封败兵之将李景隆为太子太师。
第二年春天,李景隆又纠集六十万大军进军白沟河(今河北新城),再次北伐。四月二十四日,燕王带先头部队试探敌军虚实,结果中了埋伏,逃出时仅有三骑跟从。第二天黎明,燕王率主力来战,他亲自冲锋陷阵,杀得敌人七零八落。官军因圣旨在上,不敢射杀燕王,只得射马,燕王因此换了三次马,箭用完了,剑砍断了,他几次险些被官军活捉,但依然毫无畏惧地冲入敌阵,因他知道,有圣旨在,官军不敢伤害他。沮丧的官军都觉得这简直是开一次非常残酷的玩笑。就在燕王横刀跃马冲乱敌阵之时,突然刮起了大风,折断了李景隆的帅旗。燕军借着风势纵火,一时火焰弥天,飞沙走石,官军大败。李景隆败逃德州,又弃城南逃济南,再战又败,全军覆没。德州是李景隆的伐燕大本营,无数军需物资全为燕王所得。李景隆一败再败,丧师百余万,被朝廷召回,恼怒的黄子澄不得不奏闻建文帝诛杀李景隆。建文帝说:“不应重用他,朕用了,责在朕,杀了他也无用。”这样,第三次北伐又以惨败而告终。
燕王率军包围了济南,但久攻三个月不下,就决定堵水淹城。济南守将铁铉用计诈降,当燕王的坐骑刚人吊桥进城门时,突然一块重达千钧的铁板从天而降,燕王眼快,勒马急退,得以脱险,但马头被砸碎了。同时,铁铉又乘机派人泄去了准备淹济南的大水。燕王惊魂未定,无计可施,只好从济南撤兵。济南保卫战的胜利,打破了燕王不可战胜的神话。建文帝升铁铉为兵部尚书,盛庸为平燕将军,开始了第四次北伐。十二月,双方主力战于东昌(今山东聊城)。燕军因多次取胜而产生了轻敌情绪,在官军众多火器的轰击下死伤数万,被迫退还北平。东昌之战是官军获得的惟一的一次重大胜利。建文三年(1401年),为雪东昌之耻,燕王率师南出保定,两军主力在夹河(今河北武邑)相遇。正在交战时,突然刮起暴风,燕军正好在上风口,乘着风势追杀。官军方面则风沙迷眼,不能抬头目视,终于全军溃退,自相践踏者不计其数。第四次北伐又失败了。至此,丧师二百余万的四次北伐画上了句号,朝廷再也没有力量去组织北伐了。
建文帝接到败报十分恐慌,假意罢免齐泰、黄子澄官职,逐出京城,又派大理寺薛岩去燕军转告皇帝旨意:朱棣遣散军队;朝廷召回部队;赦朱棣无罪;恢复燕王爵位,永为藩辅。燕王知道这是建文帝的缓兵之计,拒不受诏。燕王此时也处在十分困难的地位,叛乱三军,虽多次获胜,但攻城掠地之后并未派人驻守,因而多数城池得而复失,始终据守的只有北平、保定、永平三处而已,以疲惫之师、弹丸之地去攻取一个国家,前途十分渺茫。正在燕王进退维谷之际,一个建文帝身边的宦官前来密告说:“京师兵力空虚,很容易夺取。”原来,建文帝上台以后,对宦官看管限制极严,一旦违法乱纪,就将他们逮捕下狱,这就引起了宦官们的不满。在“靖难之役”中,朝中多数宦官都在暗中支持燕王,为他刺探军情,向他通报消息。听了宦官的密告以后,道衍和尚就力劝燕王大举南下,逾城不攻,直捣南京。燕王当机立断,誓师南下,义无反顾。
建文四年(1402年)正月,燕王率军经蠡县、衡水,破东阿、汶上、东平、单县、沛县,越徐州至蒙城,到达淮河地区,遭到魏国公徐祖辉率领的增援部队的堵截。四月,两军大战于齐眉山(今安徽灵璧),燕军因连续奔袭,十分疲劳,又无后方作战,也不适应当地酷暑湿闷的气候。多染疾病,士气十分低落,开战以后,官军初胜。在这关键时刻,建文帝认为燕军初败必然后撤,又偏听偏信一些大臣的意见,临阵易将,诏回徐祖辉镇守南京。当占总兵力一半的徐祖辉部队刚一撤回,燕军就乘机反攻,截断了官军的粮道。官军粮草不济,士气瓦解,无法坚持,遂决定于次日夜间拔寨突围,以三声炮响为号。极为凑巧的是,燕军也准备在次日夜间劫营,也是以三声炮响为号。因此,在次日夜间,燕军早已埋伏在官军军营四周,当他们听到官军三声炮响之时,以为是自己指挥部发出的号令,便冲出埋伏地,向官军兵营进击。当他们冲到官军兵营时,恰巧官军将军营大门打开,准备突围。燕军见大门洞开,正中下怀,真是天赐良机,便一窝蜂地猛冲进去,大获全胜。从此,燕军乘胜南下,势如破竹。五月占领泗州(今安徽泗县),又用计偷渡淮水,上岸夹击官军,打败盛庸,尽获淮南战舰,迅速占领了盱眙、扬州、高邮、通泰、仪真(今江苏仪征)等地。一时间,江淮各州县守官望风归降,无数战舰驶入高资港,准备跨越长江天堑。