官渡之戰,袁紹兵強馬壯,來勢洶洶。曹操設計斬殺顏良、文醜後,袁紹腦羞成怒,不顧謀士的勸阻,揮師南下,急於與曹操決一雌雄。而曹操雖連勝兩仗,但敵強我弱的形式並未改變。所以,曹操主動撤退到官渡(今河南中牟東北)一線設防,相機打擊敵人。
曹軍撤至官渡後,同袁軍形成對峙局麵。兩軍你來我往,曹軍雖然不斷取得一些局部勝利,但軍需匱乏、軍力不足的弱點還是逐漸地暴露出來。想打敗袁紹,真是不容易。
一個人的出現,改變了官渡之戰的形勢。
袁紹的謀士許攸,為人比較貪財,袁紹沒能滿足他,他已經對袁紹心懷不滿;接著他又給袁紹提了個建議遭到了拒絕,更是老大的不樂意。恰在此時,鄴城傳來消息說他的家屬因為犯了法被留守的審配抓起來關進了大牢。許攸聽了,頓時火冒三丈,他和曹操年輕時本是朋友,於是就連夜離開袁紹大營前來投奔了曹操。
曹操聽說許攸來了,一骨碌翻下床來,連鞋都來不及穿,光著腳就跑出來迎接。一邊跑,一邊高聲笑著說:“子遠(許攸的字)老遠跑到我這兒來,我的大事肯定可以成功了!”
曹操和許攸手拉著手來到營帳中坐定,許攸開門見山地問:“袁紹兵力很強,明公打算怎麼戰勝他呢?”
曹操還沒來得及回答,許攸又提出了一個更為要害的問題:“明公軍中還有多少存糧?”
曹操回答說:“還可以支應一年。”
許攸接口說:“不可能,您再說說看。”
曹操隻得改口:“還可以支持半年。”
許攸聽後,生氣地說:“您根本不想打敗袁紹吧?為什麼不肯跟我說實話呢?”
曹操見瞞不過許攸,隻得笑著說:“剛才不過同您開個玩笑。說實話,軍中的糧食隻夠維持一個月了,您看怎麼辦呢?”
許攸答道:“明公孤軍固守,外無救兵,內無糧草,情況確實不妙。我有一計,現在袁紹有一萬多車軍糧囤放在故市和烏巢,防備並不嚴密。可派一支精兵襲擊,出其不意,以火燒糧,不出三天,袁紹必然全軍潰敗。”
許攸的計策,與曹操尋找戰機、出奇製勝的戰略意圖完全符合。曹操聽後,大喜過望,立刻傳令讓曹洪、荀攸留守大營,自己親率五千步騎連夜出發。不少將領都擔心許攸使詐,心存疑慮,隻有荀攸、賈詡相信許攸,勸曹操不必多慮,盡管放心行動。
曹操帶的五千步騎,化裝成袁軍,蒙過一路上袁軍的哨卡,直撲烏巢(今河南延津縣東南),一邊圍住糧囤放火,一邊猛攻守糧袁軍。袁軍抵擋不住,退守營寨,飛馬向袁紹告急。
袁紹接到烏巢守軍的告急後,犯了一個致命的錯誤。他隻派出幾千人馬救烏巢,而命張郃、高覽率大軍攻曹營,以圖收“圍魏救趙”之功效。沒想曹操出兵前,對大營早有安排,張郃、高覽急切間根本攻不下。曹操更是不顧一切,猛攻烏巢。烏巢守軍抵擋不住,終於全軍潰敗,主將被殺,糧草也被燒光了。
曹操在烏巢得手,張郃這邊依舊在猛攻。可袁紹竟聽信讒言,懷疑張郃、高覽有異心,致使二人鬥誌全無,一齊來曹營請降。當時曹操還沒有回營,留守大營的曹洪怕二人是詐降,不敢接納。荀攸對他們的投降是深信不疑,勸曹洪打開營門,接受了張、高二人的投降。
張郃、高覽一降,袁軍銳氣盡失,上下一片驚恐。曹操乘勝全麵出擊,袁軍不戰自潰。袁紹隻帶800騎兵渡黃河逃命。