建文二年(1400年)四月,李景隆兵敗白溝河,李景隆率領殘余部隊逃亡濟南。朱棣認為追擊敵人的機會到了,于是他下令北軍全線發(fā)動反攻,意欲將60萬大軍一個不剩的全部送回西天老家。正當追擊時,一支精銳部隊擋住去路,率領這支軍隊的正是徐達的長子魏國公徐輝祖。徐輝祖沖燕王朱棣說:“燕賊,別來無恙!”朱棣率軍進攻,徐輝祖毫不示弱,多次抵擋住朱棣的進攻,徐輝祖為李景隆的撤退贏得了時間,朱棣被迫撤軍,徐輝祖也率軍退至濟南。此戰(zhàn)猛將瞿能戰(zhàn)死在了白溝河,平安則帶領著殘兵四處逃散。建文帝召回敗軍之師李景隆。
朱棣沒想明白建文帝怎么讓徐輝祖率軍前來了,朱允炆看來心里也清楚了,終于明白李景隆確實不靠譜,于是他召見徐輝祖,把大軍殿后的任務交給了他。徐輝祖的掩護不僅為敗退贏得了時間,還為下一次的反攻保存了力量。
這時遠在北平的朱高熾聽聞白溝河大捷的戰(zhàn)報后寫了一封書信呈給朱棣,書信中的內容大體意思是兒子恭喜父親成功攻下德州,在彼眾我寡情況下反敗為勝,扭轉戰(zhàn)機。兒提議讓將士們修整幾日,趁著我軍士氣正旺,休息幾日后,揮師攻占濟南。朱棣看后采納了他的意見。
建文二年(1400年)五月,朱棣的大軍輕松打下德州,那里存儲著官軍的大量糧草物資,全部落入燕軍的手中。隨后,燕軍乘勝南下,直逼濟南。盛庸是守衛(wèi)濟南的主將,山東參政鐵鉉協助他。兩個人有勇有謀,讓朱棣在濟南碰了一鼻子灰。鐵鉉是鄧(今河南鄧州)人,他是元代色目人后裔。鐵鉉性情剛決,聰明敏捷,太學讀書時,熟通經史,成績卓著,由國子生被選授禮部給事中,后調任都督府斷事。李景隆戰(zhàn)敗,河北及山東北部各城守軍皆望風而潰。朱棣在濟南城外大敗李景隆,隨之包圍了濟南。此時,濟南城內只有都指揮盛庸所部,兵力單薄。危急時刻,正在外地為李景隆的北伐軍運送糧草的鐵鉉聞濟南危在旦夕,火速趕赴濟南,與盛庸歃血為盟,約定死守城池。
六月八日,燕軍兵臨濟南城下。朱棣認識到濟南在戰(zhàn)略上的重要性,奪取濟南,進可南下金陵(今南京),退可以劃黃河而割據。因此,他督促北軍筑長圍,晝夜攻擊。鐵鉉依仗濟南城池高大,拼死抵抗,并在夜間派出少數人馬焚毀北軍的攻城器具。朱棣見硬攻不克,就射書入城促降,希望鐵鉉像其他投降的守將一樣,放棄抵抗,歸降北軍。朱棣令人用箭將一封勸降書射進城內,鐵鉉見信后隨即效仿此法回信一封。朱棣打開一看,見是《周公輔成王論》一文。原來,鐵鉉意欲借此奉勸朱棣要效法輔佐侄子治理天下的周公,忠心輔佐侄子朱允炆。朱棣當然不會做周公,見鐵鉉拒降,只得繼續(xù)攻城。當這場攻守戰(zhàn)已持續(xù)了近3個月而濟南城依然固若金湯時,朱棣急了,打算掘開黃河大堤,引黃河水灌城。城中軍民很害怕,鐵鉉卻說:“不用擔心,有妙計可破,用不了三天燕王就得退兵。”
為了濟南百姓的安危,鐵鉉決定以詐降之計,誘殺朱棣。鐵鉉派壯士暗在城門上置千斤閘,又讓守城士卒大哭哀嚎“濟南城快被淹了,我們就要死了”。不久,盡撤樓櫓防具,派城中百姓長者代替守城軍做使者,到燕王大營跪伏請降:“朝中有奸臣進讒,才使得大王您冒危險出生入死奮戰(zhàn)。您是高皇帝親兒子,我輩皆是高皇帝臣民,一直想向大王您投降。但我們濟南人不習兵革,見大軍壓境,深怕被軍士殺害。敬請大王退師十里,單騎入城,我們恭迎大駕!”燕王朱棣一聽,面露喜色。連月的攻戰(zhàn)不息,真是太苦太累了,現在終于可以入城了,豈不令人高興。卻不知鐵鉉已在城門上方置放大鐵板,就待朱棣入城時將其擊斃。不知是計的朱棣果然僅率少量親信入城,剛進城門,鐵板自上急落,因城門樓上士兵放鐵板稍早一會,只砸傷馬頭,未傷著朱棣。朱棣知道上當,換馬而逃。事先埋伏好的士兵跳出攔截,守城士兵急忙收挽吊橋,眼看吊橋就要被挽起,朱棣策馬飛奔,才撿回性命?;貭I后,惱羞成怒的朱棣下令加緊攻打濟南城,連續(xù)用火炮轟擊城墻。眼看城池危在旦夕,鐵鉉機智地讓守城將士將明太祖朱元璋的神牌懸于城上,燕軍投鼠忌器,不敢再用炮轟擊城池。鐵鉉乘機將城墻修補牢固,又不斷派出小分隊出城騷擾燕軍。朱棣圍城數月不下,將士疲倦,南軍援軍又即將趕到,憂心忡忡,不知如何是好。他的謀士道衍勸他撤回北平休養(yǎng)后再南下,朱棣只好撤軍北返,鐵鉉與盛庸見燕軍后撤,便從后面一路掩殺并收復德州。
濟南解圍之后,鐵鉉在大明湖天心水面亭設宴,犒賞將士。朱允炆遺官賜金慰勞濟南守軍,又擢鐵鉉為山東布政使,不久,又加兵部尚書銜,贊理軍事協助盛庸準備北伐燕軍。得以免受戰(zhàn)火的泉城百姓于是稱鐵鉉為“城神”。朱允炆下詔以盛庸被命為平燕將軍,任總兵官。陳暉、平安為左右副總兵,馬溥、徐真為左右參將,鐵鉉進升為兵部尚書參贊軍務。
九月,朱允炆以盛唐代李景隆為大將軍,都督平安、吳杰為左右副將軍,再舉北伐。盛庸屯德州,平安、吳杰駐定州;都督徐凱營滄州,互為犄角以困北平。十月,朱棣獲悉盛軍北進,遂佯稱攻遼東,至通州,突然轉師南攻滄州,生擒徐凱,殲萬余人。燕師進逼德州,誘敗盛軍于城外。其后沿運河而南,連克臨清、館陶、大名、濟寧等地。盛庸、鐵鉉率軍營于東昌(今山東聊城)以扼燕師歸路。十二月二十五日,燕師歸至東昌,遭盛軍截擊,死傷數萬人,主將張玉戰(zhàn)死,被迫還師北平。建文三年(1401年)春,盛庸率軍20萬人駐德州,吳杰、平安駐真定,互為犄角,伺機出擊。三月,朱棣再次率師南下,大敗盛軍于夾河(今河北武邑境),斬首10余萬人(參見夾河之戰(zhàn))。閏三月初十日,又誘敗吳杰、平安軍于滹沱河,斬首6萬余人(參見滹沱河之戰(zhàn))。乘勝連克真定、順德(今河北邢臺)、廣平(今河北永年)、大名等地。朱允炆為緩兵之計,下詔赦燕王罪,企圖使其懈怠;同時發(fā)兵斷其糧道,以迫其北歸,伺機殲滅。朱棣識破此計,于六月中旬,遣都指揮使李遠率輕騎6000人南下,連克濟寧、沛縣等地,焚盛軍糧船數百艘、糧數百萬石,京師(今南京)大震。七月,盛庸乘燕師南下,令平安率萬騎攻北平;大同守將房昭回攻保定。朱棣聞訊,率軍回援,大敗其軍,還師北平。燕師與建文帝軍隊在河北及魯西爭戰(zhàn)兩年有余,燕師所克城邑旋得旋失,惟占據北平、保定、水平3府。朱棣深感南軍兵多勢眾,曠日持久,攻防俱難,遂決定乘虛直搗京師(南京)。