建文二年深秋,北地已寒。燕王朱棣接到探马急报:南军再度北上。他当机立断,决定趁敌军立足未稳之际,先发制人夺取沧州,为南下打开通道。一场精心策划的军事行动就此展开。朱棣明面上大张旗鼓宣称要出征辽东,暗地里却派遣工兵在直沽(今天津一带)秘密修建浮桥,为大军快速机动铺设道路。十月二十五日,燕军主力从通州突然折转向南,昼夜疾行,仅用两日便兵临沧州城下。此时南军守将徐凯还在加固城防,措手不及。燕军攻势如潮,短短两天便攻克沧州,徐凯等将领被迫投降。这场闪电战展现了朱棣出色的战场指挥能力和燕军高度的机动性。
夺取沧州后,燕军自长芦渡河南下,十一月初四抵达山东德州。朱棣曾试图招降南军主将盛庸,但未能成功,于是转而向南挺进。盛庸派兵袭击燕军后队,却反遭挫败。随着战事推进,燕军于十一月抵达临清。深谙“兵马未动,粮草先行”的朱棣,决定采取釜底抽薪之策——他派遣轻骑兵奔袭大名,焚毁了南军的运粮船队,企图扰乱敌军补给。随后,燕军从馆陶渡过卫运河(当时京杭运河的重要组成部分),先后进占东阿、东平,兵锋直指山东南部,迫使盛庸率军南下应对。然而,盛庸并非被动接招,他将计就计,选定东昌(今山东聊城)作为决战战场,并在此布下重兵,阵中配置了大量火枪与毒弩,静待燕军入瓮。
十二月二十五日,燕军抵达东昌,决战一触即发。一向身先士卒的朱棣再次亲率精锐冲锋,先攻南军左翼未果,转而直扑中军。盛庸故意下令放开阵型,诱使朱棣深入,随即合围。刹那间,燕王陷入重重包围,形势危急。燕军大将张玉、朱能闻讯,分别率兵拼死来救。朱棣在乱军中左冲右突,血战良久,终于与朱能会合,杀出一条血路逃离核心战场。但此战燕军损失惨重:大量士卒被南军的火器所伤,更致命的是,大将张玉在救援途中被南军包围,力战而亡。不久,南军另一名将平安率部赶到,与盛庸合兵追击。次日再战,燕军又遭败绩,不得不向北撤退。历经南军多次阻截,直至建文三年正月十六,残兵才艰难返回北平。张玉之死让朱棣悲痛不已,史载其“食不下咽”。
东昌之战中,朱棣多次身陷绝境,却总能化险为夷。这背后隐藏着一个关键的政治因素:建文帝朱允炆曾下达“毋使朕有杀叔父名”的明确旨意。这道命令如同无形的枷锁,束缚了南军将士的手脚——他们既不敢伤害朱棣,怕将来被追究“弑王”之罪;又难以在万军之中将其活捉。朱棣正是恃此“护身符”,甚至在撤退时敢于单骑断后,南军将士望之却无可奈何,只能任其离去。这道充满矛盾的政治指令,在战场上产生了微妙而巨大的影响,成为朱棣屡次绝境逃生的关键保障。
尽管朱棣脱险,但东昌之战无疑是靖难之役爆发以来南军取得的第一场重大胜利。捷报传至南京,建文帝大喜过望,于建文三年正月正式恢复了齐泰、黄子澄的官职(二人此前虽被罢免,但仍以智囊身份参与机要),并郑重举行仪式,以东昌大捷祭告太庙。盛庸所部军威大振,士气高昂。反观燕军,经此重创,此后南下的路线也发生了战略性调整——改为取道徐州、沛县方向,不再轻易进入山东境内。从全局看,盛庸、平安等将领通过在山东境内的胜利,有效消耗了燕军的有生力量,遏制了其快速南下的势头,使得德州、济南等战略要地得以稳固。一时间,南北双方形成了某种战略平衡,谁都无法取得压倒性优势,战争进入了更为艰苦的相持阶段。