汉献帝建安五年(公元200年),袁绍率军进攻许都,曹操进军官渡抵抗。袁绍驻军阳武,监军沮授劝袁绍说:“我军数量虽多,但战斗力比不上曹军;曹军粮草短缺,军用物资储备比不上我军。我们应当作长期打算,拖延时间,打持久战。”袁绍没有听从。八月,袁绍大军向前稍微作推进,依沙丘扎营,东西达数十里。曹操也把部队分开驻扎,与袁绍军营相对峙。
袁绍派大批车辆运粮草,让大将淳于琼等率领一万余人护送,在袁绍大营以北四十里处留宿。沮授劝袁绍说:“可分派一支部队在运粮队的外围巡逻,以防万一曹操派军袭击。”袁绍不听。谋士许攸说:“曹操兵力很少,而集中全力来抵抗我军,许都由剩下的人守卫,防备一定空虚,倘若派一支队伍轻装上阵,连夜奔袭,可以攻克许都。占领许都后,就奉迎天子以讨伐曹操,一定能够捉住曹操。”袁绍不同意,说:“我一定要先捉住曹操。”正在这时,许攸家里有人犯法,留守邺城的审配将他们逮捕,许攸知道后大怒,于是投奔了曹操。
曹操听说许攸前来, 来不及穿鞋,光着脚出来迎接他。许攸对曹操说:“袁军势力强大,您有什么办法对付他?现在还有多少粮草?”曹操说:“还可以支持一年。”许攸说:“没有那么多,再说一次。”曹操又说:“可以维持半年。”许攸说:“难道您不想击破袁绍吗?为什么不说实话呢?”曹操说:“刚才只是开玩笑罢了,其实只可应付一个月,还能有什么办法?”许攸说:“您孤军独守,外部没有救援,而粮草也快用完了,这是危急的关头。袁绍有一万多辆辎重车,在故市、乌巢,守军戒备不严密,倘若派轻装部队袭击,出其不意,烧掉他们的粮草与军用物资,不超过三天。袁绍大军就会自行败北。”
曹操十分高兴,于是亲自率领五千名步骑兵出击。军队全部用袁军的旗号,兵士嘴里衔着小木棍,把马嘴绑上,以防发出声音,每人抱一束柴草,夜里从小道出营。经过的路上万一有人盘问,就回答说;“袁公害怕曹操袭击后方辎重,派兵去加强守备。”听的人信以为真,全都毫无戒备。到达乌巢后,围住袁军辎重,四面放火,袁军营中惊乱不堪。
袁绍听到曹操袭击淳于琼的消息,派遣大将高览、张郃去攻打曹军大营。张郃请求先去救援淳于琼,谋士郭图坚持要先攻曹操营寨。张郃说;“曹操营寨坚固,一定攻不下来。倘若淳于琼等被捉,我们都将成为俘虏。”袁绍只是派轻兵去援救淳于琼,而派重兵进攻曹军大营,却攻不下来。
袁绍增援的骑兵到达乌巢,曹军士兵都拼死作战。于是大败袁军,斩杀淳于琼等,烧毁袁军全部粮草,把一千余名袁军士兵的鼻子全都割下,又把所俘获的牛马的嘴唇、舌头也割下,拿给袁绍军队看。袁军将士看到后,极为害怕。郭图因自己的计策失败,心中羞愧,就又去袁绍那里诬告张郃,说:“张郃听说我军失利,幸灾乐祸。”张郃听说后,又恨又怕,就与高览烧毁了攻营的器械,前去曹营投降。
于是,袁军惊恐万状,全面崩溃。袁绍与袁谭带领八百名骑士渡过黄河逃走,曹军追赶不上,但缴获了袁绍的全部辎重、图书和珍宝。袁军残部投降,曹操把他们全部活埋了,先后杀死的有七万余人。