袁绍试图将曹操围攻于白马,结果曹操成功地解除了危机。兵败于白马的袁绍又亲率大军渡河南进,想一口吞掉曹操。袁绍集团的谋士沮授劝阻说:“现在最好的办法是驻军延津,分出一部分兵力进攻官渡,如果全军贸然南进,万一失利,就会有全军覆没之险。”袁绍刚愎自用,仍然一意孤行,命令文丑为先锋率部队向南前行。
曹操得到袁绍南进的消息,带兵赶到延津南扎营,以逸待劳迎击袁军。为了引诱袁军,曹操命令所有的骑兵卸下马鞍,放开缰绳,把辎重车辆都杂乱地扔在路上。袁军看见曹军的军用物资扔得满地都是,争先恐后地去抢,乱成一团。曹操抓住有利时机,命令将士一起冲杀,趁乱诛杀了袁绍的大将文丑,又俘获了袁军不少人马。
火烧乌巢
袁绍军队虽然在白马、延津两战失利,但其在军事上仍占优势。
公元200年7月,袁绍集结部队进攻阳武(属于现在的原阳),准备再次南下进攻官渡、许都。此时,曹军的粮草已不多了,袁绍的谋士沮授又建议:“我方兵力虽多,但不及曹军勇猛,可曹军的粮食、物资不如我们充分,若速战对曹军有利,我们应当用持久战的办法消耗对方。”袁绍又一次拒绝听取谋士的良言,将大部队扎营于官渡前线,与曹军针锋相对。
当年10月,袁绍派大将淳于琼带1万人马从邺城(即现在的安阳)不断将军粮运到乌巢(即现在的延津东南)囤积起来。谋士沮授建议另派一支部队驻扎在囤粮守军外侧,成犄角之势,以防曹军偷袭,袁绍不听。袁绍的另一谋士许攸又献计说:“曹军集结官渡,后方空虚,可派轻骑偷袭许都,使曹军首尾不能相顾,进而取胜。”袁绍不屑一顾地说:“不必,我一定要在此擒获曹操。”许攸觉得袁绍轻敌必然失败,正在此时,许攸家族有人犯法,被袁军关押起来。许攸一怒之下,星夜投奔曹操去了。
曹操听说许攸来投,高兴得连鞋子都来不及穿,光着脚跑出去迎接,连连说:“我的大事可以成功了!”许攸见曹操礼贤下士,待自己为上宾,就把袁绍囤积军粮于乌巢的军情透露给了曹操,并建议曹操偷袭乌巢军粮。
曹军当时军粮已不多了,曹操正在想出奇制胜之策,许攸的计策正中下怀。10月的一天夜晚,曹操留下曹洪等人防守官渡大营,亲率骑兵5000人,打着袁军旗号,从小路直奔乌巢。途中遭遇袁军,袁军见装束是自己人,就轻易地放走了曹军。曹操顺利地到达目的地,团团围住粮囤放起火来。黑夜中浓烟四起,火光冲天,袁军乱作一团。乌巢守将淳于琼慌忙迎战,被曹军杀了。
守在官渡的袁军听到乌巢起火,都无心恋战,大将张郃、高览带兵投降了曹操。袁绍和他的儿子袁谭来不及穿戴齐整,带着剩下的800多骑兵向北逃去。
官渡一战,经过一年多的对峙,最终以曹操的全面胜利而告终,袁绍主力被消灭。