公元200年(建安五年),袁绍进攻曹操,9月,在官渡之战中曹军击败袁绍。为曹操统一北方奠定了基础。
公元199年,袁军进驻黎阳。公元200年正月,曹操为免腹背受敌,先东进徐州,击溃与袁绍联系的刘备。尔后又进占官渡,筑垒坚壁,严阵以待。2月,袁绍军进占黎阳。颜良渡河包围白马。4月,曹操设计于白马斩杀颜良。袁绍急统军渡河追来,曹操于南阪设伏,斩袁将文丑。曹操这才归军官渡严守。7月,袁绍派刘备等扰乱曹军后方,曹操派兵击破刘备等,安定了后方。8月,袁军逼近官渡与曹军对峙。
曹操在敌众我寡情况下积极防御,坚守不退,准备寻机破敌。10月,袁绍派淳于琼率兵一万多押送大量粮食屯集于乌巢。袁绍谋士许攸投奔曹操,告知袁军实情。曹操果断地决定留曹洪等人守官渡,亲率五千步骑兵偷袭乌巢,全歼守粮袁军,斩淳于琼,烧毁全部屯粮,并大败袁绍派来的救兵。
消息传来,袁军内部分裂,张邰、高览率所属投降曹操的儿子曹洪。曹操回军官渡,全面反击,大败袁军,歼敌七万余人。袁绍父子率八百骑兵逃回河北。公元202年5月,袁绍郁愤而死。不久,袁氏的残余势力也被曹操消灭。