因為顛末朱元璋大肆殛斃功臣老將後,朝廷也無人可用,朱允炆隻好起用大哥的耿炳文為將,率13萬軍伐燕。農曆八月,燕王在滹沱河大敗耿炳文。建文帝隨即任命李景隆為大將軍,代替耿炳文帶軍。李景隆本是紈絝後輩,底子不懂兵法,他彙集耿炳文的潰兵,並調各路軍馬,總計50萬撻伐朱棣,成果被朱棣打敗,李景隆乘夜率先逃竄。兵士傳聞主帥已逃,四散流亡。建文帝為大臣所矇蔽,反而嘉獎打了敗仗的李景隆,還讓他會同郭英、吳傑等調集兵將60萬眾,號稱百萬,進抵白溝河。白溝河之戰,燕王雄師一度受挫。但南軍政令不一,燕軍操縱無益機會,力挫南軍主將。南軍兵敗如山倒,李景隆再次退逃。李景隆在幾個月的時候內一敗再敗,建文帝撤免了他的大將軍職務,采黃子澄之謀,遣使媾和以求緩攻,又任命盛庸為平燕將軍以遏燕軍南下。盛庸率兵北伐,在東昌大敗燕軍,朱棣親信將領張玉死於戰陣,朱棣本身也被包抄,厥後在救兵的策應下才得以突圍。