建文二年(1400年)十月,朱棣闻报南军北上,决定在南军落脚未稳之际,夺取沧州,再度南下。于是下令出征辽东,暗中派人在直沽(今天津市中心)修建浮桥。十月二十五日,燕军从通州折转向南行进,日夜兼程,十月二十七日到达沧州,南军守将徐凯尚在筑城中;燕军仅用两天就攻下沧州,徐凯等投降。燕军自长芦渡河,十一月初四到达山东德州。朱棣计划招降盛庸未果,于是转而南下。盛庸袭击燕军后军,但遭到失败。十一月,燕军到达山东临清;朱棣决定扰乱南军的粮道,遣轻骑至大名,焚其粮船。燕军从馆陶渡河(卫运河,京杭运河的一部分;当时黄河夺淮入海),先后到达东阿、东平,威胁山东南方,迫使盛庸率军南下。盛庸将计就计,决定在东昌(今山东聊城)与燕军决战,并在阵中摆了大量火枪和毒弩。

十二月二十五日,燕军到达东昌。朱棣仍然亲自率军冲锋,先冲击南军左翼,没有冲击成功;然后又冲击南军中坚,盛庸故意打开阵将朱棣诱入,然后合围,朱棣被南军重重包围。燕军大将张玉、朱能(一说还有朱高煦)分别引兵来救,朱棣死战,终于和朱能会合,逃离战场。但是燕军损失惨重:大量燕军被火器所伤,张玉被南军包围,最后战死。南军大将平安亦率兵赶来,与盛庸合兵作战。次日,燕军再次战败,遂北还。在击退南军的阻截后,建文三年(1401年)正月十六日,燕军返回北平。张玉战死,令朱棣悲伤的食不下咽。

东昌之战,朱棣多次濒临险境。但是由于朱允炆有“毋使朕有杀叔父名”旨意,南军将士惧怕战后倒算,既不敢伤害朱棣,又难以活捉,只得放任自由;朱棣也恃此特权,单骑殿后,南军无可奈何。但是东昌之战毕竟是靖难以来南军的第一场大捷。惠帝朱允炆十分高兴,建文三年(1401年)正月,恢复了齐泰、黄子澄的官职(建文元年十一月两人被罢免,但仍作为智囊留用;至是恢复齐的兵部尚书和黄的太常寺卿职务),并以东昌大捷告太庙。盛庸军势大振。燕军经此败,以后再南下,皆由徐沛,不再走山东。

东昌之战是靖难以来南军的第一场大捷。惠帝朱允炆十分高兴,建文三年(1401年)正月恢复了齐泰、黄子澄的官职(建文元年十一月两人被罢免,但仍作为智囊留用;至是恢复齐的兵部尚书和黄的太常寺卿职务),并以东昌大捷告太庙。

局势

盛庸军势大振,燕军经此败,以后再南下,皆由徐沛,不再走山东。

在靖难全局中,盛庸、平安等人通过山东境内的两次胜利消耗了燕军有生力量,有效遏制了燕军南进之步伐,使得山东全境尤其是德州、济南等战略要地得以巩固。使得局势一时平衡,南北二方都无法取得压倒性优势。