仲春,袁绍大将颜良等人围攻白马,拉开了大战的序幕。四月,曹操亲身率兵北上解白马之围,他采取谋士荀攸之计,先进军延津(今延津北一带),做出要渡河攻击袁军的态势,吸引袁军分兵西向,然后俄然转向敏捷赶往白马。
而当袁绍传闻曹操攻击乌巢时,以为这恰是攻破曹操大营的好机遇,是以派去的援兵很少,而以重兵围攻曹操大营。
曹操大喜,跣足出迎,以后亲率精锐步骑五千人,军队人衔枚,马勒口,换袁军戎服乘夜从巷子偷袭乌巢。曹操军至乌巢,命四周放火,袁军大乱,淳于琼拒营死守。
建安七年(202年),袁绍病死,袁绍的两个儿子袁谭、袁尚反面,产生火拼。袁谭不敌袁尚,向曹操乞降。
曹操带领独一的马队俄然杀出,大破追兵,阵斩文丑,袁军大震。曹操初战得胜,主动撤兵,持续扼守官渡。
裴松之以为此数不精确,曹操的兵力不会如此之少,但曹操兵力远逊于袁绍倒是毫无疑问的。
士卒都搏命力战,是以大破袁军,斩淳于琼等,尽燔其粮草。
两军一攻一守,相持近二个月,久战之下,曹操处境极其困难。十月,袁绍从河北运来粮草万余车,派大将淳于琼等带万余人看管,屯于离袁绍大营四十里的乌巢。
建安九年(204年)仲春,曹操乘袁尚出兵攻打袁谭之机,进军围攻邺城(今河北邯郸临漳西一带)。袁尚率军回救,依滏水(今滏阳河)为营,曹操进军将其营寨包抄。
曹操大怒说:“贼在背后,乃白!”
建安五年(200年)正月,董承等人谋诛曹操事泄,被曹操杀掉。刘备遂袭杀徐州刺史车胄,占有徐州。曹操为了免于将来同袁绍作战时前后受敌,决定先毁灭在徐州安身未稳的刘备。
官渡之战,曹操击溃了最大的仇敌袁绍,由他同一北方已是局势所趋。官渡之战也是中国战役史上以少胜多、以弱胜强的闻名战例。
客观前提上,曹操处于优势,但因为他能精确阐发客观前提,长于听取别人的精确定见,以是能扬长避短,采取精确的计谋战术,使战役向无益于本身的方面转化,颠末本身主观上的尽力,终究博得了胜利。
袁尚惊骇,要求投降,曹操不准。袁尚乘夜逃窜,袁军崩溃,袁尚逃奔中山(今河北定县)。曹操命人拿着缉获袁尚的印绶节钺招降邺城守军,城中斗志崩溃,邺城遂被曹操攻破。