朱元璋當國時,恐權臣篡權,規定藩王有移文中央索取奸臣和舉兵清君側的權利,他在《皇明祖訓》中說:“朝無正臣,內有奸逆,必舉兵誅討,以清君側。”朱棣以此為理由,指齊泰、黃子澄為奸臣,須加誅討,並稱自己的舉動為“靖難”,即靖禍難之意。因此,曆史上稱這場朱明皇室內部的爭奪戰爭為“靖難之役”。
朱棣初起兵時,燕軍隻據北平一隅之地,勢小力弱,朝廷則在各方麵都占壓倒性優勢。所以戰爭初期,朝廷擬以優勢兵力,分進合擊,將燕軍圍殲於北平。朱棣采取內線作戰,迅速即攻取了北平以北的居庸關、懷來、密雲和以東的薊州、遵化、永平(今河北盧龍)等州縣,掃平了北平的外圍,排除了後顧之憂,便於從容對付朝廷的問罪之師。經過朱元璋大肆殺戮功臣宿將之後,朝廷也無將可用,朱允炆隻好起用年近古稀的幸存老將長興侯耿炳文為大將軍,率軍13萬伐燕。建文元年八月(真定之戰),師至河北滹沱河地區。燕王在中秋夜乘南軍不備,突破雄縣,盡克南軍的先頭部隊。繼而又於滹沱河北岸大敗南軍的主力部隊。建文帝聽到耿炳文軍敗,根據黃子澄的推薦,任曹國公李景隆為大將軍,代替耿炳文對燕軍作戰。
李景隆本是絝絝子弟,素不知兵,“寡謀而驕,色厲而餒”。九月,李景隆至德州,收集耿炳文的潰散兵將,並調各路軍馬,共計50萬,進抵河澗駐紮。當朱棣偵知李景隆軍中的部署後,笑著說,兵法有五敗,李氏全犯了,其兵必敗無疑,這就是政令不修,上下離心;兵將不適北平霜雪氣候,糧草不足;不計險易,深入趨利;求勝心切,剛愎自用,但智信不足,仁勇俱無;所部盡是烏合之眾,且不團結。為了引誘南軍深入,朱棣決計姚廣孝協助世子朱高熾留守北平,自己親率大軍去援救被遼東軍進攻的永平,並告誡朱高熾說:“李景隆來,隻宜堅守,不能出戰。”朱棣還撤去了蘆溝橋的守兵。
朱棣這一招果然靈驗,李景隆聽說朱棣率軍赴援永平,就率師於十月直趨北平城下。經過蘆溝橋時見無守兵,禁不住歡喜,說:“不守此橋,我看朱棣是無能為力了。”這時朱高熾在北平城內嚴密部署,拚死守衛。李景隆則號令不嚴,指揮失當,幾次攻城,皆被擊退。南軍都督瞿能曾率千餘精騎,殺人張掖門,但後援不至,隻好停止進攻。又因李景隆貪功,要瞿能等待大部隊一起進攻,錯過了時機。燕軍則因此得到喘息,連夜往城牆上潑水,天冷結冰,待到次日,南軍也無法攀城進攻了。朱棣解救永平之後,率師直趨大寧(今內蒙古寧城西)。