官渡の戦い

事前の経緯

当時は後漢皇帝は名目だけの存在となり、各地で群雄が割拠する戦乱の世だった。次第に群雄たちが淘汰される中で勝ち残ってきたのが、曹操と袁紹である。
曹操は、養祖父曹騰が大長秋まで昇った大宦官であり、父曹嵩は売官によって三公の一つである太尉になるなど、濁流派に属する宦官の家系の出身であった。曹操自身は役人職を歴任した後、黄巾の乱において功を立てて西園八校尉に任命されるなど頭角を現し、陳留で身内と共に挙兵、たび重なる戦役の中で献帝を手中に収めたことで正当性を手にし、自身も三公である司空となり、呂布・李傕・袁術・張繍らを下して199年には河南から江蘇の長江以北にかけた地域（兗州・豫州・司隸・徐州）を統一した。
一方、袁紹は四世にわたって三公を輩出した名門中の名門汝南袁氏の頭領であり、その名の下には多くの人物が集まった。若くして司隷校尉まで昇った袁紹は宦官粛清や反董卓連合など時代の節目において常に一線に立ち、冀州の牧となった後は袁術・公孫瓚・張燕らと争い合い、197年には大将軍の位を得た。199年には易京に公孫瓚を滅ぼし、一族に軍を預けて山東をも併呑、冀州・青州・并州・幽州の四州（河北・山西・山東）を支配した。中原の二大勢力となった両者の対立は必至となる。
199年、劉備が徐州にて曹操へ反乱を起こし、孫乾を派遣して袁紹に同盟を求めてきた。曹操は劉備を討つべく、袁紹への先陣を于禁に任せて東征した。田豊は「劉備と戦っている曹操の背後を襲えば、一度の行軍で勝利できます」と主張したが、袁紹は子供の病気を理由に遠征を許可せず、近くの延津を攻撃して于禁に撃退された。劉備は曹操の来襲を知ると妻子を捨てて逃走し、かつて推挙した縁がある袁譚が支配する青州に逃げ、袁紹の元に身を寄せることになった。劉備の家臣関羽は曹操の捕虜となり、曹操の客将となった。

白馬・延津の戦い

建安5年（200年）、遂に袁紹は河南侵攻の意思を固めるが、袁紹陣営では対曹操の戦略について幕僚同士のさかんな論争が起きた。
沮授は、曹操との直接対決を避けて騎兵を分散派遣し、国境を荒らすことで敵を疲労させる策を主張した。曰く、「曹操は天子を擁立し、許昌に宮殿を築いており、これに南進するのは義に背くものであります。曹操の法令は行き届き、士卒は精練ですから、公孫瓚がなすすべなく包囲されていたのとは違います。大義名分の無い兵を起こすべきではありません」。
別駕の田豊も前年の電撃戦主張から策を切り替え、持久戦略を主張した。曰く、「曹操は既に劉備を破り、許昌は空城ではなくなりました。曹操は用兵を得意とし、兵力が少なくても侮れないので、持久戦に持ち込むのに越したことはありません。鋭気を養いながら敵を疲労させれば、三年を待たずに勝つことができます」。
これに対し、郭図と治中の審配は短期決戦を主張した。曰く、「兵書には、兵力が十倍なら囲み、五倍なら攻め、互角なら全力で戦うとあります。明公（袁紹）の神武と河北の強兵によって曹操を討伐するのだから、その勢いは掌を返すようなものです。今すぐ攻めねば、のちのち狙いにくいことになるでしょう」。
袁紹は郭図と審配の進言を採用した。さらに郭図は、内外を総監する沮授の権限と勢威が強大すぎると袁紹に進言した。これにより監軍の地位・権限は三都督へと三分割され、沮授・淳于瓊・郭図の3人が都督に任命された。また、頑なに持論を主張した田豊は、兵士の士気を低下させるという理由で袁紹に投獄されてしまった。
2月、袁紹は自らの支配する地域に陳琳に書かせた檄文を出し、軍を大いにまとめ、曹操との決戦を断行した。まず袁紹は淳于瓊・郭図・顔良を派遣し、白馬（黄河南岸）に布陣していた曹操軍の東郡太守劉延を攻撃させた。
4月、曹操は軍師荀攸の策略に従い、于禁と楽進の軍を白馬から数キロ離れた延津から渡河させ、淳于瓊と郭図を顔良から切り離すことに成功すると、張遼と降将である関羽を先鋒として白馬の顔良を攻撃した。関羽が敵中深くに斬り込み顔良の首級を挙げたので、白馬の包囲は解かれた。黄河を渡った于禁・楽進の軍は黄河沿いに西進し、汲・獲嘉の二県にある三十余りの敵陣を焼き払い、将軍何茂・王摩ら二十余人を降伏させた。
曹操は白馬の住民を移住させると、白馬の拠点を放棄して西に敗走した。袁紹は今度は文醜・劉備の騎兵部隊に曹操の陣を攻撃させるが、荀攸はこれに対して輜重隊をおとりに使う策略を曹操に進言した。この計に嵌った文醜軍の隊列が乱れたところを攻撃し、文醜を討ち取った。
袁紹が黄河を渡り、延津に向かおうとすると、沮授は病気を理由に軍指揮の辞退を申し出た。これに袁紹は憤然とし、沮授配下の軍を郭図に従属させた。

官渡砦攻防

こうして曹操軍は袁紹軍の出鼻を叩きはしたが、袁紹の本隊が渡河する前には延津を放棄し、官渡へ敗走した。官渡は黄河から南東へ流れる官渡水を望み、濮水、陰溝水やその支流が複雑に交差する天険の地であり、曹操は兼ねてより河北・山東からの脅威を睨んでこの地に砦を整備してきていた。
黄河を渡河した袁紹は陽武（現在の河南省新郷市原陽県）に軍を進めた。沮授は「北（袁紹陣営）は数は多いが、勇猛さでは南（曹操陣営）に及びません。しかし食料の点では南は少なく、北に及ばない。南は速戦、北は持久戦が有利です」と進言したが、退けられた。
8月、袁紹は本隊で曹操軍を攻め、大兵力を生かし東西数十里に渡る陣を布いて少しずつ前進する、という戦術で曹操の陣営を圧迫した。曹操も陣営を分けて合戦したが、敗れ、官渡の砦に引き返した。砦に籠もった曹操に対して、袁紹は土山を築いたり地下道を掘ることで城壁を無効化しようとしたが、曹操も内部に同じものを造って対応した。また、袁紹は物見櫓を造り、土山から曹操陣営内に矢を射掛けた。曹操軍はこの攻撃に苦戦したが、于禁が土山の指揮をして奮戦したので曹操軍の戦意は上がった。また、曹操は発石車を造り、これらの物見櫓を破壊した。袁紹軍は投石を避けるため坑道を掘りながら前進を試みたが、曹操軍が急造した塹壕に阻まれた。
豫州の汝南郡（袁氏本貫の地）において劉辟が曹操に対して反乱を起こすと、袁紹は劉備を派遣してこれを支援し、許昌周辺を荒らし回って多くの県を寝返らせた。曹操は曹仁の分析に従い、曹仁の騎兵部隊を派遣してこれを打ち破り、諸県を奪回した。曹仁が帰還した後、劉備は再度袁紹の命を受けて汝南に侵攻し、賊の龔都らと手を結んだ。曹操は今度は蔡陽を派遣して劉備を攻撃させたが、蔡陽は敗北して討たれた。「趙儼伝」には、袁紹が豫州に兵を派遣し、豫州の諸郡に対し調略をかけると、多くの郡がそれに応じたとある。劉備ら袁紹軍の別働隊の活動により、曹操は本拠地の豫州の維持さえ困難になってきていた。
曹操は荀攸の進言に従って、史渙と徐晃に袁紹軍の輸送隊を攻撃させ、数千台の穀物輸送車を焼き払ったものの、その間にも曹操軍の食糧不足は更に深刻な状態となっていた。また袁紹側もこれら曹操の妨害もあり、兵糧補給に難を生じ始めた。そこで袁紹は眭元進・韓莒子・呂威璜・趙叡の四将を淳于瓊に指揮させ、輸送された食糧を備蓄した兵糧庫を守備させようとした。このときに沮授は淳于瓊に加えて蒋奇に別働隊を指揮させて守備を万全にすることを袁紹に進言したが、またしても受け入れられなかった。
袁紹軍も曹操軍の輸送部隊をたびたび攻撃したが、曹操軍の輸送部隊を任された任峻が輸送部隊の防衛を強化すると、袁紹軍は曹操軍の輸送部隊を攻撃しなくなった。
戦況は持久戦の様相を呈し始め、曹操陣営の食料は日に日に少なくなっていった。兵糧が枯渇し、連日袁紹軍の攻城にさらされる中、曹操軍内には投降を考えて袁紹と内通する、あるいはそれを考える者が続出した。弱気になった曹操は、許昌の留守番をしていた荀彧に対して「引き返すことで袁紹軍をおびき寄せて滅ぼすつもりである」という婉曲的に撤退を希望する手紙を出したが、荀彧はこれを強く諌め、「内情を見るに必ず袁紹軍に変事があるので、奇策を用いる機会を逃さなければ勝てます」と進言した。

烏巣急襲

10月、袁紹陣営の許攸は膠着した戦線を打開するべく、軽装兵を用いて許都を襲撃することを説いたが袁紹に受け入れられず、また家族が罪を犯して審配に逮捕されたことで嫌気がさし、曹操陣営に投降してきた。許攸は烏巣（現在の河南省新郷市延津県）に宿営している淳于瓊が守る兵糧輸送隊の守備が手薄なことを教えて、そこに奇襲をかけるように進言した。曹操の側近の多くはこの許攸の発言を疑ったが、荀攸と賈詡はこの意見を支持した。そこで曹操は即座に行動を起こし、自ら楽進と歩騎五千人を指揮して淳于瓊軍を強襲した。
烏巣にいる淳于瓊が襲われたことを知った袁紹軍内では、郭図が「この間に曹操の本陣を攻撃すれば、敵軍は必ず引き返すでしょう。そうすれば、援軍を出さなくても解決できます」と言い、張郃は「敵陣は堅固なので勝てません。それよりも早く淳于瓊を救援するべきです」と言った。袁紹はこれに対して両方の作戦を採用し、軽装の騎兵隊を派遣して淳于瓊を救援させ、張郃・高覧に重歩兵の指揮を執らせて曹操軍の本陣を攻撃させた。
曹操は淳于瓊軍と救援の袁紹軍軽騎兵隊を大いに撃破し、兵糧を焼き払った。眭元進ら四将は討ち尽くされ、淳于瓊は楽進に討ち取られた。
さらに烏巣救援を主張した張郃・高覧を曹操軍の本陣強襲に向かわせるという袁紹の無神経とも言える指揮が災いしたか（曹操本陣を易々と破ってしまえば郭図の献策が正しく、張郃の主張は誤りであったと実証してしまうため）、張郃と高覧による曹操軍本陣強襲は留守を預かっていた曹洪に防がれただけでなく、（淳于瓊が敗れたことを聞いた）張郃と高覧は袁紹を見限って曹操に帰服してしまった。
将が寝返り兵糧の多くも損失した袁紹軍は、大混乱に陥って河北へ敗走し、官渡の戦いは終わった。捕虜となった沮授は曹操に仕官を請われたが、沮授は家族が袁紹に仕えていることから死を願った。曹操は沮授を赦免して厚遇したが、ほどなく脱走を企てた沮授は斬首された。

別方面での戦い

荊州の劉表は袁紹に味方していたが、南陽の張繍が賈詡の進言で曹操に寝返り、江夏の黄祖が曹操に味方した孫策に敗れ、長沙・零陵・桂陽では桓階の進言で張羨が三郡を挙げての大規模な反乱を起こすなど、身動きの取れない状況に陥っていた。劉表配下の韓嵩・劉先・蒯越は曹操に味方することを進言したが、劉表は受け入れなかった。さらに曹操は衛覬を益州に派遣して、劉璋に劉表を攻撃させようとしたが、こちらは道中の交通が途絶していたので失敗している。
孫策は当初曹操に恭順して劉表を攻撃していたが、突如北方への進出を企図して曹操と敵対した。しかし広陵の陳登にこれを阻まれる内、郭嘉の予測通り孫策に恨みを持つ者の手で横死した。孫策の後を継いだ孫権は、張昭・張紘らの働きによって再び曹操に恭順した。
袁紹と共に公孫瓚を滅ぼした鮮于輔は、田豫の進言で曹操に寝返り、曹操から幽州六郡を任された。烏桓司馬の閻柔も曹操に帰順した。
曹操陣営の南方を預かっていた李通は、袁紹と劉表の両方から調略をかけられたが、断固として拒否した。多くの者が袁紹と内通するなか、李通の郡だけが動揺しなかったという。
曹操陣営の東方を預かっていた臧覇は、何度も青州へ攻め込んだので、曹操は袁紹との戦いに専念することができた。
曹操陣営の西方を預かっていた鍾繇は、馬騰と韓遂を味方につけて関中を安定させ、曹操に馬二千頭余りを送った。
盧弼は『三国志集解』で、李通が任された淮汝の地、臧覇が任された青徐の地、鍾繇が任された関中の地は、決して失うことのできない重要な地方だったと評価している。

戦後

敗れた袁紹軍内では孟岱・蒋奇・郭図・辛評が審配を讒言したり、投獄されていた田豊が逢紀に讒言されて袁紹に処刑されてしまうなど、多数のいざこざが戦前以上に頻発した。
201年、袁紹の敗北を見た冀州の各地で反乱が多発する。袁紹は曹操と再び倉亭で戦ったが敗れた（倉亭の戦い）とされている。しかし袁紹の存命中は曹操は河北には侵攻しなかった。袁紹は晩年を反乱の鎮圧にあてるが、とうとう発病し吐血、翌202年に憂悶のうちに死去する。
袁紹の没後、かねてよりの懸案であった長子袁譚と末子袁尚との後継者争いが勃発する。袁紹死後の衆目のおおまかな支持は年長の袁譚寄りだった（「袁紹伝」）とされているが、異母兄弟である袁尚が袁紹の寵愛を受けていたのも事実であり、逢紀・審配らはこれを理由に袁尚を立て、袁譚派の郭図・辛評らと激しく争った。
袁尚には次男袁煕も味方し、その支持者には袁紹に重用されていた冀州出身者も多く、最終的には袁譚以上の家臣の後ろ盾を得ていたようである。袁尚は直接対決で袁譚を破ったが、進退極まった袁譚は曹操と同盟、今度は逆に袁譚が袁尚を撃破して北方に退かせたものの、返す刀で袁譚は曹操に滅ぼされた。
曹操は北伐を行い、一時難航するも、結果的には異民族烏桓と豪族公孫康を制し、それらがかくまっていた袁尚、袁煕を滅ぼした。ここに曹操は華北全域を支配する圧倒的な勢力へとのし上がった。