漢獻帝建安五年(公元200年)二月,袁紹任命沮授為監軍,統率10萬大軍,從鄴城(河南安陽北)出發,進攻許昌。袁紹親率十余萬冀州精兵到黃河北岸的黎陽(今河南浚縣東北)建立自己的指揮部。相隔曹操的駐地官渡(河南中軍縣東北)已不遠,袁紹企圖一舉消滅曹軍。
曹操當時是東漢獻帝時期的丞相,他挾天子以令諸侯、巧用計謀,先后打敗了呂布、袁術和張繡等軍閥。這時北方僅剩的大軍閥就是袁紹。他據有冀、青、幽、并四州,兵多將廣,謀士很多,糧食充足。他見曹操勢力日強,一直想進攻許昌,與曹軍決戰。曹操則把袁紹視為統一北方的最大障礙,決心要鏟除他。雙方虎視眈眈,秣馬厲兵,尋求機會開戰。
建安四年六月,袁紹南下進攻許都,正式拉開官渡之戰的序幕;袁紹初戰告敗,手下大將損折,氣勢大減,但他占有巨大的兵力優勢,曹操與他雙方都僵持不下;建安五年十月,曹操夜襲放火燒了袁軍軍糧,袁軍軍心大亂,不少人投降,袁紹也倉皇退回了河北,曹操以勝利告終。
但沒想到袁紹初戰告敗,手下大將顏良、文丑更是被一戰而斬,袁紹軍隊氣勢大減。不過雖然氣勢低了很多,奈何袁紹還是占有巨大的兵力優勢,曹操屢次和他對峙,都是敗退據守。這時候官渡之戰進入到中期,雙方都僵持不下,曹操打不過袁紹,但是袁紹也拿曹操沒辦法。就這樣雙方都到了最后階段,就看誰堅持得久。
建安五年十月,袁紹軍隊運送軍糧的時候,被曹操夜襲烏巢,放火燒了軍糧,袁軍沒了糧食軍心大亂,不少人投降,袁紹也倉皇退回了河北。至此官渡之戰以曹操勝利告終。