1401年1月9日和10日,燕王進攻山東境內運河之西的東昌,但遭受了重大的失敗。帝國的大將軍盛庸這一次又使用了火器,打死了燕王軍隊中的幾名將領和數萬士兵。燕王在撤退回北京的時候,幾乎被平安的騎兵所生擒。皇帝被這次捷報所鼓舞,在1月31日又恢複了齊泰和黃子澄的職務。燕王下決心要控製北直隸的南部,他在2月28日恢複了攻勢。4月5日和6日,他的軍隊重創了德州附近滹沱河以北夾河上的盛庸的軍隊。
這個月的晚些時候,燕王又擊潰了平安的援兵。皇帝在失望之中於4月17日重新罷免了齊泰和黃子澄,而以茹瑺取代齊泰——茹瑺(1358~1409)和遭貶的李景隆現在是朝廷裏的主和派領袖人物。
這種重新組合的方式形成了人們熟悉的格局。當勝利似乎在望時,齊泰和黃子澄被官複原職;當戰局不利時,他們又被罷了官。這不僅是意在安撫燕王的一種隻有象征意義的人事變動;它表現了皇帝周圍存在著嚴重的派係鬥爭。在政府新班子的領導下,皇帝向燕王做了一些最後遭致夭折的和平試探。但是,他繼續支持他的這兩位主要的顧問,而且委托他們去長江中遊組織民兵隊伍,以取得對他的帝業的支持。
在整個這個夏天,燕王不斷襲擊通往真定和德州的運河供應線,搗毀了從北直隸南部到山東南部的倉庫和運輸設施。
1401年7月初,盛庸未能切斷燕王沿運河的供應線;這條線路使山東北部的帝國部隊麵臨很大危險。8月末,平安從真定對北京發動一次勝利的反擊,迫使燕王又一次回師北上。但是,平安和他的僚屬們在10日末又被遏阻,燕王則在11月底回到了北京。與此同時,建文朝廷從朝鮮輸入戰馬,想以此增強它的戰鬥力,因為朝鮮國王李芳遠(1400-1418年在位)公開表示支持皇帝打燕王。但是這些辦法未能影響戰爭的結局,因為軍事領導太無能了。1402年1月,燕王離開他的封國,開始對南京發動一次新攻勢。
他聽了給他當間諜的皇帝宮內太監們的勸告,繞過了運河沿岸、安徽和南直隸的淮河沿岸的設防堡壘,集中進攻那些防禦甚差的城市和縣。他的部隊繞過了德州,渡過了黃河,並在一個月之內拿下了山東西北部的幾個咽喉據點,完全切斷了帝國政府通往北方的供應線。朝廷馬上派已故徐達將軍的長子、同時又是燕王妃的兄弟徐輝祖帶兵增援山東;但是他沒有能夠擋住燕王的軍隊。燕王一直南進,在3月3日拿下了南直隸西北部的徐州。這時,皇帝的軍隊從北京地區和德州撤回,想保住南京畿輔地區。
1402年4月初,燕王進入安徽北部的宿州,打敗了平安的騎兵,後者是被派來攔截他的。但是,5月23日燕王在安徽靈壁南麵的祁門山受到嚴重挫折,被徐輝祖所率皇帝方麵的優勢兵力打敗。燕王在這次戰事失利中幸免於難,在5天以後,他利用徐輝祖突然被召回和援軍到來的機會,對在靈壁駐兵的平安發動突襲,拿獲了平安本人和其他幾個重要將官。他的軍隊在6月7日攻破了淮河上盛庸的防線,並在繞過了淮河附近的鳳陽和運河上的淮安(在洪澤湖附近)這兩座堅固設防城市之後,以閃電的速度直下淮河,於6月17日攻占了揚州。7月1日,燕王的部隊被盛庸的水軍擋在南京對岸的浦子口。兩天以後,指揮長江舟師的都督僉事陳瑄(1365-1433年)叛投燕王,因此燕王的軍隊有了渡過長江的船隻。他們馬上過了江,未遇抵抗地直抵南京城郊。
在此以前,建文帝曾經把他的軍隊從北方召還,並糾集南京附近的新兵來保衛京師,但是朝廷的政策迄至最後一刻也沒有定下來。6月20日被召回的齊泰和黃子澄力主不惜一切代價保衛京師;李景隆和茹瑺則傾向於通過談判解決問題。7月9日,皇帝派李景隆和洪武帝的第19子朱橞(1379-1417年)到南京城外的龍潭向燕王提出議和。他們回來報告說談判失敗,但是他們顯然利用這次使命想用別的辦法終止戰爭。5天以後,即7月13日,李景隆和當時防守金川門的朱橞私下密謀;他們不經戰鬥,大開城門,歡迎燕王入城。在燕王軍隊抵達後的一場混戰中,南京城內的皇宮大院起了火。當火勢撲滅後發現了幾具燒焦了的屍體,據說它們是皇帝、馬皇後(於1395年結婚)和他的長子朱文奎(1396年生)的屍體。
皇帝最後的真正命運仍然是一個謎。不能肯定他是否真的被燒死了;後來對他的帝業抱同情心的曆史學家們都說他喬裝成和尚逃離南京。官方曆史學家當然隻能說皇帝及其長子已死於難中;否則,燕王就不可能稱帝了。皇帝的第二個兒子朱文圭當時隻有兩歲,他和皇帝家中其餘幸存的成員一起被生擒。他被免於一死,但和其他家人一起被長期監禁,直到1457年他56歲時才重獲自由。燕王在禮儀上拒絕了他的支持者們反複勸進之後的幾天,於1402年7月17日即皇帝位,但不是繼承建文帝的帝位,而是繼承太祖高皇帝的帝位。