袁军逼近曹营下寨。审配在曹营周围堆土山,命军士从上往下射箭。曹兵行走困难。刘晔画出发石车图样,曹操命连夜赶造数百辆,分布在营寨各处。袁军弓箭手放箭时,发石车一起拽动,炮石横飞,弓箭手死伤无数。审配又献计从土山后挖掘地道,想从地下奇袭。不料此计被刘晔识破,他让曹军在营寨周围挖深沟。袁军的地道挖到沟边,前功尽弃。曹军守了两个月,粮草不继。曹操想弃官渡回许昌,荀彧来信劝他等待时机,用奇计取胜,曹操就下令死守。一天,史涣出营抓到袁军侦探,说是袁军大将韩猛将运粮到军前。荀攸建议派徐晃半路拦击,切断袁军粮草,袁军自乱。曹操就派徐晃带史涣为先锋,张辽、许褚接应。当夜韩猛押送粮草数千车前往袁绍营寨时,遭到徐晃截杀,史涣杀散车夫,命军士放火焚烧粮车。袁绍看到火光,派张郃、高览救援,张辽、许褚赶到,杀散了袁军。审配提议,乌巢是屯粮重地,要派重兵把守,防止曹操劫粮。袁绍就派审配去运粮,派大将淳于琼带领四员将官、两万人马守乌巢。
曹操军粮将要用完,派人到许昌催粮。使者却被袁军捉住,送交谋士许攸。许攸曾经是曹操小时候的好朋友,从使者身上搜出了书信,见袁绍说:“曹操屯兵官渡,许昌必然空虚。我们可分一支人马偷袭许昌,许昌可拔,曹操可擒。”袁绍怀疑这是曹操的诱敌之计。许攸忙劝袁绍不要错过这个机会。正说着,审配派人送来书信,说许攸的子侄辈滥派捐税,贪污肥己,已被捕获下狱。袁绍大怒,骂许攸是收了曹操的贿赂来设计陷害他,把许攸赶了出去。许攸回到营帐,气得拔剑要抹脖子。随从夺下剑,劝他投奔曹操,许攸就深夜出逃。
曹操刚睡下,听军士来报:“南阳许攸求见。”便慌忙跳下床,赤着双脚迎出来,大笑着挽起许攸的手走入营帐,先拜下去。许攸忙说:“你是丞相,我是平民,怎么拜我?”曹操说:“你我是老朋友,我怎么敢分贵贱?”许攸说了袁绍不用他的计,反要杀他,所以来投。曹操说:“袁绍要用你的计,我就完了。”许攸问:“你军中还有多少粮草?”曹操说:“够用一年。”许攸不信,曹操又说:“够用半年。”许攸摇头,曹操改口:“还能支撑三个月。”许攸笑着说:“世上人都说曹孟德是奸雄,果然如此。”曹操只好低声说:“只够这个月用的了。”许攸说:“别瞒我,你的粮草已经用完了!”曹操大惊。许攸出示了那封被他截获的信。曹操向许攸问计,许攸说:“袁军粮草都在乌巢,守将淳于琼贪杯过度。你挑选精兵,冒充袁将蒋奇领兵护粮,把他的粮草烧了,袁军自然大败。”次日,曹操选了马步军五千,准备往乌巢劫粮。他自领中军,让张辽、许褚在前,徐晃、于禁在后,打着袁军旗号,黄昏时望乌巢进发。沮授夜观天象,见太白逆行,侵犯斗牛之分,忙求监押他的军卒让他见袁绍。袁绍喝醉酒正在熟睡,被他叫醒,沮授让他提防乌巢,以免被曹操袭击。袁绍大怒,杀了监卒,另派人监押沮授。
曹军到了乌巢,四更已尽,曹操命军士放火。淳于琼喝醉了刚睡下,便被活捉了去。这时,袁将眭元进等运粮回来,慌忙来救。曹操下令:“只许向前,待敌人来到背后,再回头作战。”众军一齐向前掩杀,等袁将赶到背后,曹操才命转身作战,杀了袁将,他又让人把淳于琼割去耳鼻,剁了手指,放回袁营报信。袁绍见乌巢方向火起,忙召文武商议。张郃要与高览去救,郭图却提议劫曹营。袁绍听了郭图的话,派张郃、高览领五千兵去劫营,派蒋奇领一万兵救乌巢。蒋奇走到半路,碰到曹军回师,被张辽一刀杀死。张郃、高览来到曹营,中了埋伏,待袁绍的援兵到来,又碰上曹操杀回,只剩张郃、高览二人逃脱。淳于琼回营,被气愤的袁绍当即斩首。郭图抢先嫁祸于人,说:“张郃、高览早想降曹,必定损兵折将。”袁绍立即派人召张、高问罪。郭图又暗暗通知张、高:“主公要杀你们。”等袁绍派去的人赶到,高览拔剑杀死来使,与张郃一同投降了曹操。曹操封张郃为偏将军、都亭侯,高览为偏将军、东莱侯。袁军人心惶惶,无心再战。当晚,曹操依许攸的计策,派张郃、高览去劫营,大获全胜。曹操又派人散布谣言称要调动人马,一路取邺郡,一路取黎阳,断袁军的退路。袁绍听信,就派袁尚领五万人马救邺郡,辛明领兵五万救黎阳。曹操见袁绍人马混乱,兵分八路,冲杀过来。袁军溃不成军。袁绍还没来得及披甲,在长子袁谭的保护下,慌忙逃命,只带八百余人渡过黄河。曹操把夺来的金银锦缎分赏给将士,又找到一捆书信,都是他的部下与袁绍暗中勾结的罪证。有人建议查对姓名,统统杀掉,曹操说:“那时袁绍强大,连我都不能自保,何况别人?”遂命人把书信烧掉,不再追查。
沮授因被监禁,当了俘虏。曹操劝他投降,他宁死不降。曹操把他留在军中,他却盗马逃跑。曹操一怒之下把他抓回来杀了,可事后又懊悔不迭,于是命人把沮授厚葬在黄河渡口。曹操率大军乘胜追击。袁绍逃到黎阳北岸,大将蒋义渠出寨迎接。逃散各处的溃兵听说袁绍来到这里,又聚拢来,组成大军,打算跟着袁绍回冀州。夜间宿营,各帐都有哭声。袁绍前往偷听,有的在哭兄弟,有的在哭儿子,士兵们都在说:“主公若听了田丰的话,我们怎么能受这种祸殃?”袁绍后悔不迭。次日,正行间,逢纪来迎,说:“田丰听说主公兵败,幸灾乐祸地鼓掌大笑。”袁绍非常愤怒,就派使者持他的剑去杀田丰。狱吏来见田丰,说:“袁将军大败而回,必定会重用你。”田丰笑道:“袁将军要打了胜仗,一高兴还会赦免我,他打了败仗,必定会杀我。”话音刚落,使者捧袁绍宝剑来到。狱吏泪流满面,田丰从容自刎。
袁绍回到冀州,心烦意乱。后妻刘氏劝他立世子。袁绍有三个儿子:长子袁谭,字显思,守青州;次子袁熙,字显奕,守幽州;三子袁尚,字显甫,是刘氏所生,最讨袁绍喜欢,就留在了身边。袁绍召集审配、逢纪、辛评、郭图商议。审配、逢纪一向辅佐袁尚,辛评、郭图一向辅佐袁谭,四人各执一词,争论不休。正争着,军士来报:袁熙领兵六万、袁谭领兵五万、外甥高干领兵五万来到城外。袁绍大喜,再次整顿人马,来战曹操。曹操的大军陈列在黄河岸上,当地百姓前来慰问。曹操命人取出金银重赏百姓,还传下命令:凡杀百姓鸡犬者,与杀人同罪。于是,军心震慑,民心安定。曹操听说袁军三十万已到仓亭下寨,就领兵前行。次日,两军对垒,袁尚先出马,史涣出阵迎敌。二人战不三回合,袁尚回马就走,翻身一箭,射中史涣左眼,史涣落马而死。曹操回寨,程昱献十面埋伏之计。曹操就依计派十员大将各领人马十面埋伏。半夜,曹操命许褚领兵去劫袁寨。袁绍五寨人马一齐杀出,许褚回身就走。袁军追到黄河岸边,曹操才让军士转身厮杀。袁军大乱,慌忙后撤,先后遭曹军几次冲杀。袁军冲出重围,人马已损失殆尽,袁熙、高干被射伤,袁绍父子抱头痛哭。正哭着,袁绍昏倒,众人救醒,吐血不止,袁绍让他们各回本州,整顿人马,与曹贼再决雌雄!