1 東漢末年,出現了軍閥混戰的局面。袁紹是當時北方最大的軍閥。他占據的地方大,人口多,糧食足,兵力強,因而野心勃勃,想要獨霸天下。曹操是三國時期的梟雄,他統一了北方,建立了三國里面最強大的魏國。但是一開始曹操的實力比袁紹要弱得多。不過,他在消滅了中原地區其他軍閥勢力之后,也逐漸強大起來。曹操也雄心勃勃,想要統一北方。袁、曹互相沖突,最后必然要打起仗來,官渡之戰就是在這種形勢下發生的。漢獻帝建安四年(公元199年),袁紹憑著巨大的實力優勢,調集了十萬大軍、一萬匹戰馬,準備進攻許都(東漢臨時的都城,也是曹操的大本營),一舉消滅曹操。當時曹操的部將聽到袁紹來攻打的消息都很害怕。曹操把將領們和謀士們召集起來,分析當時的形勢。他對大家說:“袁紹這個人,野心很大而智謀短淺,表面凌厲而膽量很小,對人猜疑、刻薄,缺乏威信。他的兵雖然多,但是指揮不當,將領驕傲而號令不統一。他占據的地盤廣闊,糧食充足,不正像是給咱們送來禮物一樣嗎?”將領們聽了曹操這番話,膽子壯了,勇氣和信心也增加了。曹操還進行了周密的軍事部署,決定先把周圍的割據勢力各個擊破,以防這些割據勢力同袁紹聯合起來,使自己處于兩線作戰的不利地位。把周圍這些敵對勢力掃除和擊敗之后,曹操便親自統領兩萬軍隊,屯駐在官渡(今河南省中牟縣東北),準備迎擊袁紹。
2 建安五年二月,袁紹把十萬大軍集結在黃河北岸的黎陽(今河南省浚縣東北),準備渡河南進,直搗許都:并首先派大將顏良進攻白馬(在今河南省滑縣東北)。四月,曹操從官渡率兵北上,去解救袁紹對白馬的圍困。他采納隨軍謀士荀攸聲東擊西的作戰方案,引兵先到延津(今河南省延津縣北),假裝要渡河去襲擊袁紹的后方,使袁紹分兵應戰;實際上偷偷備好輕騎部隊回襲白馬,攻其不備。袁紹不知是計,果然派出一部分軍隊趕往延津去迎戰。曹操立即率領輕騎兵向白馬挺進。曹軍來到離白馬十余里的地方,顏良才發覺,·慌忙上馬應戰。結果顏良被殺,袁軍立刻大亂,有的被殺,有的被俘,有的逃跑,一下子就潰敗了。戰斗結束以后,曹操下令軍隊沿黃河向官渡撤退。袁紹聽說曹操從白馬退出,便親自率領大軍渡河追擊,恨不得一口把曹軍吞掉。袁紹的先頭部隊迅速地向延津迫近。曹操命令士兵在延津南面山坡下扎好營寨,派瞭望哨偵察袁軍動靜。瞭望哨發現袁軍,立刻向曹操報告說:“袁紹派了五六百騎兵趕來了。”過了一會,又報告說:“袁軍騎兵又有增加,步兵多得數不過來。”曹操部下的將領們都認為敵軍眾多,恐怕難以抵擋,主張退守營壘。曹操一面命令不用再來報告,一面卻讓自己所有的騎兵都卸下馬鞍,放馬吃草,輜重車輛都停在袁軍將要經過的路上。將領們覺得挺奇怪。曹操對大家說:“這樣正是為了引誘敵人上鉤。”不久,袁紹的將領文丑等人率領五六千人馬,先后來到延津。曹軍將領們感到情況緊急,催請曹操下令上馬應戰。曹操非常沉著,對他們說:“還不到時候呢。”又過了片刻,袁軍后續部隊趕到,他們看到曹軍把軍用物資拋在路上,便爭先恐后地去搶奪,亂成一片。曹操立刻指揮全部騎兵一齊上馬沖殺,把袁軍殺得大敗,斬了袁紹的大將文丑,俘虜了文丑的全部人馬。
3 延津獲勝之后,曹操把部隊從容撤回到利于防守的官渡,以誘敵深入,準備決戰。經過白馬、延津之戰,袁、曹雙方進入了暫時相持的階段。袁紹在戰爭初期受到了嚴重挫折,但是他并沒有從失敗中吸取教訓,還是仗著在軍隊數量、裝備和物資儲備上的優勢,堅持要同曹操決戰。袁紹命令主力部隊開到官渡前線,依托沙堆建立營寨,從東到西有幾十里長。曹軍也分別扎下營盤,和袁軍相對抗。九月,曹操向袁軍發動了一次進攻,沒有能夠取勝。曹操便改變方針,深溝高壘,固守陣地,等待有利時機,再向袁軍進攻。袁紹求戰心切,他看到曹軍縮回營中不再出來,就命令士兵在曹營外面堆起很多土山,在土山上砌起高高的壁樓,讓士兵們在壁樓上向曹軍營壘放箭。號令一下,袁軍壁樓上萬箭齊發,箭像雨點般向曹營射來,曹營士兵只得用盾牌遮住身體。針對袁軍這種戰法,曹操叫工匠連夜趕造一批發石車,分布在營墻內,正對著袁軍的土山。等袁軍弓箭手一射箭,曹營內一齊拽動發石車,連珠般發射石塊,往上亂打。袁軍的壁樓被擊破,弓箭手也死傷了不少。發石車發射石塊的時候聲響如雷,人們管這種車叫“霹靂車”。袁紹見用壁樓進攻沒有成功,便命人鑿暗道,直通曹營。曹操就叫士兵們在營墻內挖掘長溝,進行防御。袁軍把地道挖到溝邊,果然無法進入,反而白費了許多力氣。這樣,雙方在官渡相持了三個多月。
4 曹操方面軍隊人數少,軍糧又不充足,戰爭如果曠日持久地僵持下去,對曹軍不利。曹操一面命令部隊繼續固守官渡,一面密切注視敵人的動態,尋找有利時機,進行最后決戰。這時袁紹有個叫許攸的軍師叛逃到了曹操那里。許攸把袁紹在烏巢囤積軍糧的情況告訴了曹操,并且建議曹操派出輕騎前往偷襲,把袁紹的糧草和輜重全部燒掉,不出三天,就可以打敗袁紹。許攸獻的計策,使曹操喜出望外。這天夜里,星光滿天,曹操自己率領步兵和騎兵五千人,打著袁軍旗號,每人手里拿著一把干柴,口里銜著枚,并把所有的馬嘴都綁起來,從小路奔向烏巢。(枚是像筷子的小木棍兒。古代夜間行軍或偷襲敵營,往往讓行軍的人每人口中銜枚一根,以免說話或出聲,被敵人發覺。枚的兩頭還有繩子拴在脖子上。)曹軍一路上幾次遇到袁軍盤問,都假稱是袁紹派到烏巢去增援的,就這樣,順利地通過了袁軍的防線。天還沒亮,曹軍到達烏巢,把袁紹的糧囤團團圍住。曹操命令士兵點燃干柴放火,霎時間,只見糧囤濃煙四起,火光沖天。袁軍從夢中驚醒,慌作一團,不知如何是好。袁軍守將淳于瓊倉促應戰,經不起曹軍一陣猛攻,只得敗退下來,退守營門。袁紹對曹軍偷襲烏巢一事,并不很重視。袁紹想趁曹操攻打鳥巢的時候占領曹操的大本營,于是只派了少數騎兵去救援鳥巢,自己的主力全部向官渡進軍。而曹操留下的守軍在大營死守,直到烏巢被曹操攻占也沒被袁紹攻破。結果袁紹的軍隊知道糧草被燒,軍心大亂,全部潰散。袁紹只帶了八百親兵逃過黃河,沒過多久就病死了。曹操統一中國北部的基礎也就此形成了。