漢獻(xiàn)帝建安初年,曹操已基本上控制了黃河以南的大部分地區(qū)。袁紹占據(jù)了冀州(今河北省中南部)、青州(今山東東北部)、幽州(今河北東北部)、并州(今山西。┧闹葜。袁紹想南下一舉消滅曹操,曹操要統(tǒng)一北方,雙方戰(zhàn)爭不可避免。
建安五年(公元200年),袁紹集中了十萬精兵。曹操將三、四萬軍隊(duì)集結(jié)于官渡(今河南中牟東北)與袁紹隔河相對。袁紹先派大將顏良渡過黃河,進(jìn)攻白馬(今河南滑縣)。曹操的謀士荀攸勸曹操說:“分兵往西在延津(在今河南延津西北)一帶假裝渡河,把袁軍主力引到西邊。然后派騎兵到白馬,殺他個措手不及。”曹操采納了荀攸的意見。袁紹聽說曹操要在延津渡河,果然派大軍來堵截。這時(shí)曹操親自帶兵襲擊白馬,解救了白馬之圍。
袁紹上當(dāng)后十分惱火,不聽勸告地下令全軍渡河。此時(shí),曹操從白馬向官渡撤退。發(fā)現(xiàn)袁軍來追,就將六百名騎兵埋伏在延津南坡,并叫兵士把武器盔甲丟得滿地都是,裝成戰(zhàn)敗而逃的假象。袁紹的騎兵趕到南坡,看到這副情景便放松了警惕,兵士開始收拾那丟在地上的武器。正在此時(shí),六百名曹軍一齊沖殺出來。袁軍大敗。
白馬、延津二戰(zhàn),袁紹沒有吸取教訓(xùn),命令將士繼續(xù)進(jìn)軍,一直趕到官渡。曹操的人馬也早已回到官渡。雙方就這樣一直相持了一個多月。曹軍糧食越來越少。而與此同時(shí),袁紹派大將淳于瓊運(yùn)來軍糧,并囤積在離開官渡四十里的烏巢。
袁紹的謀士許攸探聽到曹操缺糧的情報(bào)后,勸袁紹繞過官渡,偷襲許都。袁紹卻固執(zhí)地拒絕了。這時(shí)候,有一封信從鄴城送給袁紹,信上說,許攸家人犯法被下令拘捕了。許攸又氣又恨,連夜逃出袁營,投奔曹操。曹操在大營里剛脫下靴子想睡,聽說許攸來投奔他,高興得來不及穿靴子,光著腳板跑出來迎接他。許攸見曹操以誠相待,就告訴了曹操關(guān)于袁軍的秘密,建議曹操派兵襲擊袁紹的糧草,那么袁紹就會不戰(zhàn)自敗。
曹操聽取了許攸的建議,自己帶領(lǐng)五千騎兵,連夜趕到了烏巢,一把火把袁軍的糧草燒了一干二凈。
正在官渡的袁軍將士聽說烏巢起火,都驚慌失措。但袁紹不但不派兵增援反而認(rèn)為曹營空虛,派大將張郃、高覽去進(jìn)攻,但遭到了曹軍的頑強(qiáng)抵抗而沒有成功。張郃、高覽見大勢已去就投降了曹操。袁紹帶著剩下的八百多騎兵向北逃走。不久,袁紹病死。曹操又花了七年工夫,掃平了袁紹的殘余勢力,統(tǒng)一了北方。
官渡之戰(zhàn)是袁曹雙方力量轉(zhuǎn)變、當(dāng)時(shí)中國北部由分裂走向統(tǒng)一的一次關(guān)鍵性戰(zhàn)役,對于三國歷史的發(fā)展有著極其重要的影響。此戰(zhàn)雖屬于封建割據(jù)勢力之間的爭斗,但實(shí)現(xiàn)地區(qū)性的統(tǒng)一客觀上符合人民的愿望。如今,在當(dāng)年官渡之戰(zhàn)的發(fā)生地——鄭州中牟,建成了官渡古戰(zhàn)場游覽區(qū),供人們憑吊游覽。