南山下紮好營壘,派人登高瞭望。瞭望者報告袁軍大約有五、六百騎來到。接著又報敵騎續有增加,步兵多得不可勝數。操吩咐不要再報告了,他要騎兵解鞍放馬,休息待命。這時,從白馬撤出的輜重還在路上,諸將擔心敵騎擄掠,建議連人馬帶輜重一齊進入營壘。荀攸認為現在正是利用輜重引誘敵人的時候,怎能移進營內呢!胸有成竹的曹操對荀攸的意見,點頭表示贊同,臉上不禁發出會心的微笑。
袁紹騎將文丑和劉備帶領五、六千騎先後到來。諸將催請曹操趕緊上馬迎戰。操不動,過了一會兒,袁軍騎兵到來,見路上有那樣多的輜重,分外眼紅,爭先恐後地去搶劫,因而隊伍大亂,操乘隙下令衝擊,這時操身邊騎兵不滿六百人,但他們是以逸擊勞,故能一舉擊殺文丑。文丑和顏良都是袁軍名將,經過兩次戰役便被斬殺,大大提高了曹軍計程車氣。
曹操在初戰勝利之後,仍舊按照原定計劃,退到官渡,集中兵力,築壘固守。這樣,既免遭敵人包抄,又縮短了軍糧供應線。也使得袁軍遠離後方,給自己以更多伺隙出擊的機會。
袁紹儘管兩次受挫,但憑仗其兵多勢眾,仍舊推進至陽武(今河南原陽東南)。八月,袁軍進臨官渡,於是關係袁曹成敗的官渡之戰進入了決戰階段。然而,從史料上看,這個階段的戰爭情況是含糊不清的,如《三國志》卷1《武帝紀》載:
八月,紹連營稍前,依沙墸��停��魘��鎩9�嚳鍾�胂嗟保�險講煥�J憊��宦�潁�蘇呤���I芨唇�俟俁桑�鶩遼降氐饋9�嚶諛謐髦��韻嚶ΑI萇漵�校�溉纈晗攏�姓囈悅蓸J,眾大懼。時公糧少,與荀彧書,議欲還許。彧以為:“紹悉眾聚官渡,欲與公決勝敗。公以至弱當至強,若不能制,必為所乘,是天下之大機也。且紹,布衣之雄耳,能聚人而不能用。夫以公之神武明哲,而輔以大順,何向而不濟!”公從之。
所謂“合戰不利”,雖然不能說是打了敗仗,至少也是受到挫折。史書上關於官渡戰役的描述,多來自曹魏官方,諱敗誇勝,自為情所難免。從以上敘述可知,兩軍相持,曹守袁攻,曹軍雖然焚過袁軍的運糧車,但曹軍乏食的情況仍較袁軍嚴重。操非暗于軍事者,猶欲知難而退,退保許都,從知曹軍缺糧情況實為嚴重。而曹操集團在軍事上亦必有隱諱敗衂之事,惜後人已無從知曉當時真相了。
在袁曹兩軍半年多的敵對中,袁紹未能取勝,曹操更陷於窘境,百姓困於役賦,反抗事件不斷髮生。汝南郡是袁紹的老家,袁氏門生故吏遍佈境內,他們大都擁有武裝,乘機起兵反操,遙為袁紹聲援,劉備也一再領兵到汝南,騷擾曹操後方。袁紹還多次派出小股軍隊抄掠曹軍的糧食供應線。這些都給曹操造成了很大的困難,迫使曹操一度考慮退守許都。經過荀彧諫阻,操始決定在官渡與袁紹周旋到底。他派遣曹仁帶兵到汝南把劉備趕走,鎮壓了地方反抗勢力,穩定了後方。
曹操除了採取嚴密措施,以足夠的武裝衛護糧食運輸外,也十分注意用劫糧的辦法制服袁軍。恰好這時偵察到袁紹部將韓猛押運糧車數千輛來到官渡北面幾十裡的故市(今河南延津)。操知韓猛有勇無謀,乃派得力將領徐晃、史渙前往截擊,把韓猛押送的糧谷全部燒掉。十月,袁紹大將淳于瓊等率兵萬餘,押送大隊糧車,停在離袁紹大營北面四十里的烏巢(今河南延津東南)。沮授為了確保這支運糧部隊的安全,向紹建議派一支軍隊協助守衛,以防曹操再次抄襲。可是,袁紹認為沒有必要。
這時,謀士許攸向紹獻策:曹操兵少,其主力部隊都集中在這裡,許都防務必然空虛。可遣精騎前往偷襲,操失許都,進退狼狽,必然不能再戰。紹不從,一定要先攻下操營。恰好這時許攸家人在鄴犯法,被留守審配收治,攸既因此懷恨,又嫌紹無能,乃轉而投奔曹操。據《三國志》卷1《武帝紀》注引《曹瞞傳》曰:
公聞攸來,跣出迎之,撫掌笑曰:“子遠,卿來,吾事濟矣!”既入坐,謂公曰:“袁氏軍盛,何以待之?今有幾糧乎?”公曰:“尚可支一歲。”攸曰:“無是,更言之!”又曰:“可支半歲。”攸曰:“足下不欲破袁氏邪?何言之不實也!”公曰:“向言戲之耳。其實可一月,為之奈何?”攸曰:“公孤軍獨守,外無救援而糧谷已盡,此危急之日也。今袁氏輜重有萬餘乘,在故市、烏巢,屯軍無嚴備;今以輕兵襲之,不意而至,燔其積聚,不過三日,袁氏自敗也。”
以上即許攸給曹操獻的烏巢劫糧之計,操與親信商議,諸謀士對許攸的話半信半疑,只有荀攸、賈詡勸操採納。於是操斷然