公元200年二月.袁绍任命沮授为监军.统领十万大军.从邺城出发.进攻许昌。与此同时.袁绍亲率十余万冀州精兵到黄河北岸的黎阳.总览全局.他派大将颜良进攻黎阳对岸的白马,企图引诱曹操离开官渡,然后一举消灭曹军。曹操审时度势,决定不和袁绍硬拼,而采取声东击西,避实就虚的打法。曹操亲率大军西进延津,以诱惑袁军主力西移,从而麻痹在白马的颜良。果不出曹操所料,袁绍立即命令黎阳守军赶在曹军渡河之前到达延津渡口,准备同曹军决战。曹操见袁绍中计,就悄悄率领轻骑急奔白马,一举击溃了颜良的队伍,颜良为关羽所杀。
袁绍得知白马战败,又失掉爱将,十分气恼,紧急命令全军渡河,并派大将文丑追击曹操。文丑的骑兵赶到,见路上到处都是曹军丢下的车辆物资,以为这是曹军仓促逃命时丢弃的,便争先恐后地跳下马,一窝蜂地去抢夺战利品。曹操正在山头观望,一见文丑的队伍乱了阵,便一声令下,曹兵四面冲杀过来,袁军大败。袁绍大怒,自恃兵多,不顾沮授的再三劝阻,亲率大军渡过黄河,直逼官渡。官渡离许昌不到二百里,是南北交通的咽喉。如果失掉官渡,那么许昌就失去了屏障。因此曹操尽全力固守官渡,与袁绍相持不下。
曹操打败了袁绍的多次进攻,但时间一久,粮草供应越来越困难,简直使曹操陷入一筹莫展的境地。
谋士许攸向袁绍献计,请他派一支轻骑兵,偷袭许都。袁绍冷淡地拒绝了,并指责许攸纵亲犯过。许攸又气又羞,无意留在袁营,连夜投奔曹操,而且建议曹操派兵去袭击袁绍的囤粮之地鸟巢。曹操采纳了许攸的建议。
经过周密策划后,一天夜里,曹操派曹洪等将军守营,以防袁军前来偷袭,自己和张辽、于禁、徐晃等,精选五千名步骑兵,打上袁军的旗号,悄悄离开官渡,向鸟巢进发。黎明以前,曹军抵达了鸟巢,曹操下令放火烧粮。霎时间,粮囤到处起火,浓烟滚滚,直冲云霄,不多久战斗就结束了。鸟巢粮草被烧,袁军不战自乱,曹军乘胜全军出击,袁绍还没来得及穿上盔甲,只好穿着便服,带着八百名骑兵仓皇逃过了黄河。
官渡之战,曹操用极少的兵力战胜了拥兵数十万的袁绍,此后势力大增,不久就统一了北方,为以后三国鼎立的局面奠定了基础。