當曹操在許昌擴充勢力,準備獨霸中原的時候,袁紹也占據了冀、青、幽、並四個州,積聚了雄厚的經濟力量和軍事力量,成為北方最強大的割據力量,隔黃河與曹操抗衡。為了爭奪中原地區的控製權,兩軍不久就展開了一場決定性的大戰——官渡(今河南中牟)之戰。
二牛耕地磚畫公元200年,袁紹親自率軍從鄴城(今河南安陽)出發,進攻許昌。那時,袁紹擁有軍隊數十萬,而且後方鞏固,兵精糧足;而曹操能用以抵抗袁紹的軍隊隻有一兩萬人,並且所占據的地方戰亂連綿,物資供應遠不豐富。但是,袁紹固執己見,不肯聽從別人意見,先後在白馬(今河南滑縣)、延津一帶被曹操打敗,損失了不少兵將。袁軍接連打了兩次敗仗,士氣非常低落。但袁紹自恃兵多,堅持率領大軍渡過黃河,直逼官渡,想同曹操的主力軍隊進行決戰。
官渡是南北交通的咽喉之地,距離許昌隻有100公裏。如果官渡失守,許昌就失去了屏障。因此,曹操初戰勝利後,就主動撤兵退守官渡,堅壁不出,等待時機,與袁紹軍隊相持了長達半年之久。
這時,袁紹帳下的謀士不和,相互攻擊。一個名叫許攸的人趁機投奔了曹操,告訴曹操袁紹剛剛在烏巢(今河南延津東南)囤積了1萬車的軍糧,並建議曹操出奇兵偷襲烏巢。曹操接受了這個建議。他率領了5000精銳騎兵,夜襲烏巢,放火燒掉了袁紹的軍糧。正在官渡前線的袁紹聽說烏巢被襲,嚇得目瞪口呆。袁軍軍心也發生動搖,內部開始混亂。袁軍的幾位大將見大勢已去,都投降了曹操。
袁紹還想將計就計,襲擊曹操大本營,切斷他的歸路。沒想到袁軍進到曹營時,卻受到曹軍的腹背夾擊,袁軍一下子損失了七八萬人。袁紹連吃敗仗,糧食被燒,眾叛親離,隻好帶著剩下的800騎兵,渡過黃河,向北逃竄。
官渡之戰,曹操以弱勝強,一舉消滅了袁紹的主力。他乘勝追擊,繼續向袁紹占領的地區進軍,很快就統一了北方。