取下莫州后,燕王率军退驻白沟河养精蓄锐。张玉率一队轻骑侦察耿炳文大军的情况。张玉足智多谋,由他前去侦察,燕王很放心。张玉回来报告说,耿炳文军士气低落,宜速攻之。张玉是个久经沙场的将领,知道激励士气的重要。耿炳文带了一辈子兵,所向克捷,这次是否真的“无纪律”,实在难以断言。但张玉的报告确实鼓舞了士气,坚定了燕王直扑真定的决心。
燕王于是率军往真定进发,进驻无极。这里离真定不远,只要一天的路程便可到达。燕王召集诸将商议进兵策略,也有意试探一下各个将领的勇怯,因为马上就要接战,敌众我寡的状况就摆在面前。多数将领认为南军人多势盛,应先移军新乐,与南军对垒。新乐在无极西,城比无极大,较易防守。
只有张玉持不同意见,他说: “今当径趋真定,彼虽众,然新集未齐,我军乘胜一鼓可破之。”燕王听了张玉的话很高兴,觉得张玉的胆略超乎常人,便当着众人说: “(张)玉言合吾意,吾倚玉一人足办。”燕王认同了张玉的意见,决定直取真定。
这时,有一个耿炳文的下级将领来降,名叫张保,他表示愿充当前锋,为燕王效犬马之劳。燕王问他真定虚实,他说: “耿炳文的军队号称三十万,实际上到达真定的只有十三万,一半驻扎在滹沱河南,一半驻扎
在河北。”燕王厚待张保,给了他一匹马,让他仍回到耿炳文那里去,就说自己战败被俘,趁看守不备,偷了一匹马逃了回来,并声言燕军马上就要发起进攻。
诸将领不解燕王的意思,问道: “我军由间道赶来,为的不让敌人发觉,以出其不意地发起攻击,为什么让他回去告诉耿炳文,让南军早做准备呢?"
燕王的回答显然比他的部下高明,他说: “不然,始不知彼虚实,故欲掩其不备。今知其众半营河南,半营河北,是以令其知我军且至,则南岸之众,必移于北,并力拒我,一举可尽败之。兼欲贼知雄县、莫州之败,以夺其气,兵法所谓先声后实,即此是矣。若不令其知,径薄城下,虽能胜其北岸之军,南岸之众乘我战疲,鼓行渡河,是我以劳师当彼逸力,胜负难必。”
燕王的这番话表明,当此南军还未齐集的时候,应一鼓作气将其全歼,所以故意让张保回去,一是让耿炳文知道雄县、莫州之败, “以夺其气”;二是让他知道燕军将马上发起攻击,让他把河南的军队调往河北,以便一举全歼。众将领都认为燕王说得对,意见趋于一致。
在这次大战中,张保可谓是个神秘人物,他是否投降燕王,实属可疑。从各方面的情况来看,他倒很像是个双重间谍。张保只在这次战役中表演了一番,以后就不知去向了。燕王也未必相信他真的来投降,至少燕王的部下不少人怀疑他是耿炳文的奸细,以致燕王还不得不向部下解释,纵使“彼有反侧,去一张保,于我何损!由是事成,亦一人之间耳”。
八月二十五日,燕王率军直扑真定。在离真定大约二十里处,部下获得一个打柴的人,从他口里得知,耿炳文的主力都部署在真定西北方向,东南方向没有防备。燕王亲自率领三个骑兵先到东门侦察,闯入南军运送粮食的车队中,捉住两个人询问敌情,知道河南岸的军队果然移驻北岸,从西门扎营,直达西山。燕王率领一小队精锐骑兵绕到城西,先冲垮了南军的两个营地。
这时,耿炳文出来送朝中来的使臣,当他发觉燕军已闯过来时,便慌忙往回走。他匆忙命部下拉起吊桥,燕军赶来将桥索砍断,吊桥未能拉起。幸赖耿炳文部下拼死抵挡,燕军只是一小股骑兵,使耿炳文得以侥幸脱身。耿炳文的一个部将登城大骂,与燕王只相距二百余步,燕王能清楚地听到,所以十分恼怒,便引弓向他射去,那个部将应声而倒,城中顿时一片大乱。
南军虽然受了点冲击,但阵脚并未大乱。耿炳文不愧是个有经验的老将,他很快便组织起阵形,出城迎战。张玉、朱能等人率众迎面奋击,燕王以奇兵出现在南军背后,前后夹击,横穿敌阵,耿炳文军大败。
朱能率兵三十余骑迫击南军到滹沱河边。这时耿炳文军还有数万人,又列阵迎击朱能。朱能人数虽不多,但士气高昂,他跃马大呼,三十余骑直向南军冲击,南军顿时大乱,自相践踏,死者不计其数,投降者三千余人。燕王为此以手札慰劳朱能,并提升朱能为都指挥佥事。
燕军在这次战斗中都表现得十分勇敢。骑士薛禄直冲敌阵,一枪将李坚挑于马下,接着就要杀死他,李坚大喊: “我是李驸马,不要杀我。”
薛禄便将其活捉回营。另外,宁忠、顾成和都指挥刘隧也被活捉。
耿炳文军大败,慌忙逃入城中。数万军士蜂拥而入,在城门口竞相抢入挤作一团,踩死的不计其数。耿炳文入城后即紧闭城门,不再出城迎战。
因李坚是驸马,燕王只是把他训斥了一通,便派人将他送往北平。燕王最重视的是顾成,亲自为他解开绑,并动情地说: “这是上天把你送给我呀!"顾成是洪武时旧臣,曾充朱元璋帐前亲兵,后升任指挥佥事,曾屡立战功。后来又守贵州十余年, “恩信大布,蛮人帖服”。这次伐燕,他任左军都督。燕王知道他老成持重,就把他送往北平,辅佐世子居守。
这边战场上的硝烟还未散去,那边安陆侯吴杰又率偏师来援。燕王以得胜之师横击于半道,吴杰大败,仓皇逃去。
对燕王来说,真定大战可谓战果辉煌。 “斩首三万余级,尸填满城壕,溺死滹沱河者无算,获马二万余匹,俘降者数万。”耿炳文的部众原来到达真定的共十三万,这次耿炳文共损失约三万人。
燕王有一次看到,投降的南军中三五一群地窃窃私语,就问诸将:“他们想干什么?”部下回答说,这些降兵想叛去。燕王便亲自走到降兵当中,当面对他们说: “凡投降我的人,来去自主。谁要想走,就明白地告诉我,给你盘缠,送你出境回乡。若私下溜走,被逻卒抓获后绝不宽恕。”降兵听了以后颇受感动,很快人心安定。
有两千多降兵不愿走,燕王便将他们编入自己的部伍,其余的全部遣散。那些放归的人都称颂燕王的恩德,回去后见人就说,燕王如何仁义,不好杀人。南军一再禁止传播这类话,但总是禁不住。比起部将杀俘的做法来,燕王优容俘虏的做法显然高明一筹。后来,南军在与燕军作战时常常不战而走,或者刚一接战即投降,就与燕王的这种策略有关。
耿炳文虽然初战失利,但仍有很强的战斗力,足以固守。真定是朝廷伐燕的基地,城内粮草充足。况且耿炳文又是一位善于攻守的老将。因此,当燕王对真定连攻三天而未能攻下该城,便决定撤军。他对部下解释
撤军的原因说: “攻城下策,徒旷时日,钝我士气。”南军多步兵,长于固守;燕军多骑兵,长于野战。对一个城池久攻不下,就会使士气受挫,甚至招致失败。正因如此,所以燕王决定解围而去,退回北平。
撤军之时,燕王忘不了说一番慰劳将士的话,把真定大战的胜利说成是将士们“效勤劳、奋死力”的结果。此外,朝廷把出师伐燕说成是大义灭亲,就像周公东征诛灭管蔡一样。
燕王则反其道而行之,把自己说成周公辅成王,齐泰、黄子澄就像散布流言危害周公的管叔、蔡叔,他要像周公东征诛灭管蔡一样除掉齐泰、黄子澄。为了完成这件正义之举,他要部下再接再厉,待“肃清朝廷”后再“方图休息”。