東漢末,群雄割據。建安四年(公元209年),袁紹組織10萬大軍,戰馬萬匹,進駐黎陽(今河南浚縣東北),企圖一舉消滅曹操。五年正月,曹操為了避免腹背受敵,率軍東進徐州,擊潰與袁紹聯合的劉備,逼降關羽,占據下邳(今江蘇邳縣南)。接著進駐易守難攻的官渡,嚴陣以待。
七月,袁紹率主力大軍逼進官渡北麵的陽武(今河南原陽東南)。八月,接近官渡,軍營東西長達數十千米。曹操在敵眾我寡的情況下,采取積極防禦的方針,雙方在官渡相持了數月。在這期間,曹操一度準備放棄官渡,退守許。謀士提出,撤退會造成全麵被動,應該在堅持中尋找戰機,出奇製勝。曹操依其議。
十月,袁紹派手中大將淳於瓊率兵1萬押送大量糧食,囤積在袁軍大營以北約20千米的故市、烏巢(今河南延津東南)。沮授建議袁紹派兵駐紮糧倉側翼,以防曹軍偷襲,遭袁紹拒絕。謀士許攸也提出,趁曹軍主力屯駐官渡、後方空虛的機會,派輕兵襲許,袁紹又不采納。許攸投奔曹操,告知袁軍的虛實。曹操果斷地決定留曹洪、荀攸固守官渡大營,親自率領步騎5000偷襲烏巢,半夜到達,乘袁軍毫無準備,圍攻放火,焚燒軍糧。袁紹誤認為官渡曹營一定空虛,派高覽、張郃率主力攻打,而隻派少量軍隊援救烏巢。結果官渡曹營警備森嚴,防守堅固,未能攻下。同時,曹操卻猛攻烏巢,殺死守將淳於瓊,全殲袁軍,燒毀全部囤糧。消息傳來,袁軍十分恐慌,內部分裂,張郃、高覽率所屬軍隊投降曹操。曹操乘機出擊,打敗袁軍,殲敵7萬餘人。兩年後,袁紹鬱憤而死。這場戰役為曹操統一北方奠定了基礎。