十一月,朱棣从大宁回师,路过白河,河水汹涌又无舟楫,大军无法渡河。第二天,突遇寒流河水上冻,燕军从冰上过河。朱棣向部下宣称是自己向神祈祷所致,燕军闻言士气大振。渡河后,燕军遇到李景隆手下都督陈晖统率的偏师,朱棣迅速组织进攻,陈晖兵败。败军争相渡河,河上冰突然化开,淹毙的李景隆军败兵多不胜数。随后,燕军在郑村坝遭遇李景隆主力部队。朱棣以朵颜三卫精锐骑兵先行,攻破李景隆部七座营寨,其余部队源源不断地赶来,李景隆大败,引残部退保德州。
朱棣又计划攻击大同,他说:“我军攻击大同,李景隆必然会去救援,大同冬季寒冷,李景隆军士兵都是南方人,不习惯于寒冷天气,必定会疲于奔命!”出兵后,经过广昌时,守将投降。建文二年(公元1400年)正月,朱棣攻破蔚州,逼近大同,李景隆果然从紫荆关前来救援。此时,燕军已经退兵,退回居庸关,李景隆士兵冻饿而死者众多,未能找到敌人,无功而返。朱允炆被迫将齐泰、黄子澄两个罢职,向朱棣示好,想延缓燕军攻势。
北平保卫战是朱高炽在靖难战役中最高光的时刻,他的胜利对于整个靖难战役而言,具有重要的意义。朱高炽力保北平城不失,给朱棣的回军争取了时间,朱棣的冒险出击夺取了朵颜三卫的指挥权,实力大增,使击败李景隆50万大军成为轻而易举的事情。两军之间攻守之势易位,实力对比发生了实质性的逆转。