燕军占
雄县、
莫州(今河北雄县、任丘
鄚州镇)后,燕王
朱棣便决定由间道出其不意取
真定(今河北
正定),并故意放回
耿炳文部来降的小将,令其佯称燕军将攻真定的消息,诱使耿炳文将
滹沱河(流经正定西南)南岸之兵调至北岸,以便一举全歼其部13万人,耿炳文果然中计。
建文元年七月(1399年)燕王朱棣起兵反,朝廷仅能派65岁的长兴侯耿炳文率兵北上讨伐,佩
征虏大将军印,号称30万人(实际上仅13万)。
八月十二日,大将军
耿炳文率军30万(实际到达之兵力仅13万)人营于真定。
朱棣率军击败其先锋于雄(今河北
雄县)、莫(今河北
任丘)以后,获悉耿军分屯于
滹沱河南北两岸,遂遣还耿部降将张保,声言雄、莫之败及燕师南攻真定,先声夺人,并诱其南岸屯军移营北岸,以求一举全歼其军。
二十五日,
朱棣抵真定,得知其南岸军果北移,遂领轻骑数十,绕出城西南,破其2营。耿炳文出城迎战,燕将
朱能、
张玉、
谭渊、
马云等率军奋击,朱棣以奇兵出其背后,循城夹攻,横穿其阵,大败之,擒获左右副将军
李坚、甯忠等将士数万人、斩首3万余级,获马2万余匹。
耿炳文敛军入城拒守,燕师攻城3日不下,乃引兵还北平。
朱棣攻城三日,一直没有攻下,于是对诸将说:“攻城下策,徒旷时日,钝我士气。”遂解围而去。
败讯传至南京,惠帝接受
黄子澄的建议,撤换
耿炳文,以
曹国公李景隆接任,
齐泰坚决反对,但惠帝不听,调兵五十万人伐燕,结果仍是屡战屡败。