曹操趁着袁绍战败,整顿军马,一路缓缓追击。袁绍戴着头巾、穿着单衣,带领八百多骑兵,逃到黎阳北岸,大将蒋义渠出营寨迎接,袁绍把之前兵败的事情告诉了他。蒋义渠于是召集离散的士兵,众人听说袁绍还在,又像蚂蚁聚集一样纷纷归附,袁绍的军势再次振作起来,大家商议着返回冀州。行军途中,夜晚在荒山中宿营。袁绍在营帐中听到远远传来哭声,就悄悄前去倾听。原来是战败的士兵聚在一起,诉说着丧兄失弟、弃伴亡亲的痛苦,一个个捶胸大哭,都说:“如果当初听了田丰的话,我们怎么会遭遇这场灾祸!”袁绍非常后悔,说:“我不听田丰的建议,才兵败将亡。如今回去,有什么脸面见他呢!”第二天,袁绍上马正走着,逢纪率领军队前来迎接。袁绍对逢纪说:“我不听田丰的话,才导致这场失败。我现在回去,羞于见到他。”逢纪趁机进谗言说:“田丰在狱中听说主公兵败,拍手大笑说:‘果然不出我所料!’”袁绍大怒道:“这个浅薄的书生怎么敢笑话我!我一定要杀了他!”于是命令使者拿着宝剑先到冀州狱中去杀田丰。
田丰在狱中,一天,狱吏来见他说:“向您道喜啊,田别驾!”田丰问:“有什么喜事可道贺的?”狱吏说:“袁将军大败而归,您一定会被重用了。”田丰笑着说:“我现在要死了!”狱吏问:“大家都说您要得势了,您怎么说自己要死呢?”田丰说:“袁将军外表宽容,内心猜忌,不考虑别人的忠诚。如果他打了胜仗,心情高兴,或许还能赦免我;如今战败羞愧,我就没指望活下去了。”狱吏不信。忽然使者带着宝剑到了,传达袁绍的命令,要取田丰的首级,狱吏这才大惊。田丰说:“我本来就知道自己必死无疑。”狱吏都流下了眼泪。田丰说:“大丈夫生在天地之间,不能认清自己的主公就去侍奉他,这是没有智慧啊!今天我死,又有什么可惜的呢!”于是在狱中自刎而死。后人有诗写道:
昨朝沮授军中失,今日田丰狱内亡。河北栋梁皆折断,本初焉不丧家邦!
田丰死后,听到这个消息的人都为之叹息。
袁绍回到冀州,心烦意乱,不理政事。他的妻子刘氏劝说他确立继承人。袁绍有三个儿子:长子袁谭字显思,外出镇守青州;次子袁熙字显奕,外出镇守幽州;三子袁尚字显甫,是袁绍后妻刘氏所生,长得形貌英俊,袁绍非常喜爱他,所以把他留在身边。自从官渡兵败之后,刘氏劝说袁绍立袁尚为继承人,袁绍就和审配、逢纪、辛评、郭图四人商议。原来审配、逢纪二人,一向辅佐袁尚;辛评、郭图二人,一向辅佐袁谭,四人各为其主。这时袁绍对四人说:“如今外患还没平息,内部事务不能不早点确定,我打算商议确立继承人。长子袁谭,为人性情刚烈,好杀戮;次子袁熙,为人柔弱怯懦,难以成就大事;三子袁尚,有英雄的外表,礼贤下士,我想立他为继承人。你们的意见如何?”郭图说:“三个儿子当中,袁谭是长子,如今又在外镇守,主公如果废长立幼,这是祸乱的开端。如今我军军威稍有受挫,敌军压境,怎么能再让父子兄弟自相争斗、引发内乱呢?主公暂且先考虑抵御敌人的策略,立继承人的事情,先不要多讨论。”袁绍犹豫不决。
忽然有人报告说袁熙率领六万兵马,从幽州赶来;袁谭率领五万兵马,从青州赶来;外甥高干也率领五万兵马,从并州赶来,各自到冀州助战。袁绍很高兴,再次整顿人马与曹操交战。当时曹操率领得胜之兵,在黄河边列阵,有当地百姓用箪盛饭、用壶装酒来迎接他们。曹操看到几个老人,胡须头发都全白了,就把他们请进营帐赐座,问道:“老丈们多少年纪了?”老人们回答说:“都快一百岁了。”曹操说:“我的军士惊扰了你们的家乡,我很不安。”老人们说:“桓帝的时候,有黄星出现在楚、宋的分野,辽东人殷馗通晓天文,夜晚在这里住宿,对我们这些老汉说:‘黄星出现在天象中,正照着这里。五十年后,会有真命天子在梁、沛之间兴起。’如今按年份计算,正好五十年。袁本初对百姓横征暴敛,百姓都怨恨他。丞相发动仁义之师,慰问百姓、讨伐有罪之人,官渡一战,打败袁绍的百万大军,正应了当时殷馗的预言,百姓可以盼望太平了。”曹操笑着说:“哪里敢当老丈这么说呢?”于是拿酒食和绢帛赏赐给老人,然后送他们回去。他向三军发令:“如果有到乡下杀百姓家鸡犬的,按杀人罪论处!”于是军民都对曹操敬畏服从。曹操心里也暗暗高兴。
有人报告说袁绍聚集了四个州的兵马,有二三十万,到仓亭扎下营寨。曹操带兵前进,也安下营寨。第二天,两军相对,各自摆好阵势。曹操率领众将出阵,袁绍也带着三个儿子、一个外甥以及文武官员出到阵前。曹操说:“本初你已经计穷力尽,为什么还不想着投降?等到刀架在脖子上,后悔就来不及了!”袁绍大怒,回头看着众将说:“谁敢出马?”袁尚想在父亲面前逞能,就挥舞双刀,飞马出阵,来回奔驰。曹操指着袁尚问众将:“这是什么人?”有认识的人回答说:“这是袁绍的三子袁尚。”话还没说完,一员将领挺枪快速出阵。曹操一看,是徐晃的部将史涣。两匹马相交,不到三个回合,袁尚拨转马头斜着逃走。史涣追来,袁尚拈弓搭箭,翻身向后射箭,正中史涣左眼,史涣坠马而死。袁绍见儿子得胜,挥鞭一指,大队人马拥了过来,混战一场,双方各自鸣金收兵回营寨。
曹操和众将商议打败袁绍的计策。程昱献上“十面埋伏”之计,劝曹操把军队退到黄河边,埋伏十队人马,引诱袁绍追到黄河边,“我军没有退路,必将拼死一战,就可以战胜袁绍了。”曹操认为这个计策可行。左右各分五队。左边:一队夏侯惇,二队张辽,三队李典,四队乐进,五队夏侯渊;右边:一队曹洪,二队张合,三队徐晃,四队于禁,五队高览。中军许褚担任先锋。第二天,十队人马先出发,埋伏在左右两边。到了半夜,曹操命令许褚带兵前进,装作劫寨的样子。袁绍五座营寨的人马,一起出动,许褚回军就跑。袁绍带兵追赶,喊声不断,等到天亮,追到了黄河边。曹军没有去路,曹操大喊:“前面没有路了,众军为何不拼死一战?”众军回身奋力向前。许褚飞马冲在最前面,奋力斩杀十几员敌将,袁军大乱。袁绍急忙退军,背后曹军赶来。正走着,一声鼓响,左边夏侯渊,右边高览,两支军队冲了出来。袁绍聚集三个儿子和一个外甥,拼死杀出一条血路逃走。又走了不到十里,左边乐进,右边于禁杀了出来,杀得袁军尸横遍野,血流成河。又走了没几里,左边李典,右边徐晃,两支军队截杀一阵。袁绍父子胆战心惊,逃进旧营寨。命令三军做饭,刚要吃饭,左边张辽,右边张合,径直冲来攻打营寨。袁绍慌忙上马,向前逃奔仓亭,人马困乏,想要休息,后面曹操大军赶来,袁绍拼命逃走。正走着,右边曹洪,左边夏侯惇,挡住去路。袁绍大喊:“如果不拼死一战,一定会被他们擒获!”奋力冲突,才得以突出重围。袁熙、高干都被箭射中受伤,军马几乎全部战死。袁绍抱着三个儿子痛哭一场,不觉昏倒。众人急忙抢救,袁绍口吐鲜血不止,叹息道:“我历经数十场战斗,没想到今天如此狼狈!这是上天要灭亡我啊!你们各自回本州,发誓与曹贼决一雌雄!”于是让辛评、郭图火速跟随袁谭前往青州整顿兵马,以防曹操侵犯;命令袁熙仍回幽州,高干仍回并州,各自去收拾人马,以备调用。袁绍带着袁尚等人进入冀州养病,让袁尚和审配、逢纪暂时掌管军事。