官渡の戦い
曹仁が帰還した後、劉備は再度袁紹の命を受けて汝南に侵攻し、賊の龔都らと手を結んだ。曹操は今度は蔡陽を派遣して劉備を攻撃させたが、蔡陽は敗北して討たれた。「趙儼伝」には、袁紹が豫州に兵を派遣し、豫州の諸郡に対し調略をかけると、多くの郡がそれに応じたとある。劉備ら袁紹軍の別働隊の活動により、曹操は本拠地の豫州の維持さえ困難になってきていた。
曹操は荀攸の進言に従って、史渙と徐晃に袁紹軍の輸送隊を攻撃させ、数千台の穀物輸送車を焼き払ったものの、その間にも曹操軍の食糧不足は更に深刻な状態となっていた。また袁紹側もこれら曹操の妨害もあり、兵糧補給に難を生じ始めた。そこで袁紹は眭元進・韓莒子・呂威璜・趙叡の四将を淳于瓊に指揮させ、輸送された食糧を備蓄した兵糧庫を守備させようとした。このときに沮授は淳于瓊に加えて蔣奇に別働隊を指揮させて守備を万全にすることを袁紹に進言したが、またしても受け入れられなかった。
袁紹軍も曹操軍の輸送部隊をたびたび攻撃したが、曹操軍の輸送部隊を任された任峻が輸送部隊の防衛を強化すると、袁紹軍は曹操軍の輸送部隊を攻撃しなくなった。
戦況は持久戦の様相を呈し始め、曹操陣営の食料は日に日に少なくなっていった。兵糧が枯渇し、連日袁紹軍の攻城にさらされる中、曹操軍内には投降を考えて袁紹と内通する、あるいはそれを考える者が続出した。弱気になった曹操は、許昌の留守番をしていた荀彧に対して「引き返すことで袁紹軍をおびき寄せて滅ぼすつもりである」という婉曲的に撤退を希望する手紙を出したが、荀彧はこれを強く諌め、「内情を見るに必ず袁紹軍に変事があるので、奇策を用いる機会を逃さなければ勝てます」と進言した。
官渡の戦いの兵力について『三国志』の陳寿が書いた本文部分には袁紹軍10万(騎兵1万)、曹操軍1万弱と書かれているが、これに対して『三国志』に注を付けた裴松之は疑問の声を上げている。その理由として、
曹操が旗揚げ時に既に5千の兵を持ち、その後に旧黄巾軍30万を降しているし、他にも数多くの勢力を併呑している。それからすると1万とは少なすぎる。
袁紹の軍10万に対して1万で数か月に及んで対峙できるものであろうか。
諸書によれば、袁紹軍が崩壊した後に、袁紹軍の兵士8万を生き埋めにしたとあるが、1万足らずの兵士で、いかに混乱していたとはいえ8万人を捕縛できるとは思えない。
などを挙げている。曹操の軍略が優れていたということを誇張するために、曹操軍の兵士数を少なく記述したのではないかと、裴松之は推測している。『三国志』魏書国淵伝には、曹操軍が賊軍を破った場合、それを報告する上奏文では一を十と10倍に誇張して記載することがこの時代の通例となっていたともある。ただし台湾は三軍大学の『中国歴代戦争史』は、荀彧の「曹公の兵力は袁紹の十分の一に過ぎない」と言う手紙をそのまま載せており、袁紹軍や曹操軍の数については誇張とは言い切れない史料もある。
また、196年から屯田制を実施している曹操軍が1万の兵士が食べる食料を十分に用意できず、兵数が多く遠征軍である袁紹軍が食糧不足の心配をあまりしなかった、ということを疑問に挙げられることがあるが、これに関しては
董卓・李傕・曹操・笮融らが、官渡の戦いの時点での曹操の支配地(兗州・豫州・司隸・徐州)で虐殺・略奪を行っており、曹操の支配地は非常に荒廃していた。