消灭睦固后,为了应对之后与袁绍的战争,曹操预作布置,命在青州有潜在影响的臧霸等人攻入青州,占领齐(治今山东临淄)、北海(治今山东寿光东南)等地,巩固右翼;又命大将于禁屯军黄河南岸,监视袁军。
不久,张绣听从谋士贾诩之计,投降曹操,曹操大喜,拜张绣为扬武将军,解除了后顾之忧。
建安四年(199年)十二月,曹操自率军屯于官渡(今中牟北),准备迎击袁绍。
刘备在陶谦死后,曾一度出任徐州牧,后徐州被吕布攻占,刘备投奔曹操。曹操认为刘备是个英雄,先后表他为豫州牧、左将军。
曹操攻占徐州不久,淮南袁术准备逃往青州往依袁绍,曹操派刘备去截击,袁术北上不得,呕血而死。
建安五年(200年)正月,董承等人谋诛曹操事泄,被曹操杀掉。刘备遂袭杀徐州刺史车胄,占据徐州。曹操为了免于将来同袁绍作战时前后受敌,决定先消灭在徐州立足未稳的刘备。
当时诸将皆怕袁绍乘机来攻许都,曹操对此胸有成竹,说:“刘备,人杰也,今不击,必有后患。袁绍虽有大志,而见事迟,必不动也。”
遂进军,以迅雷不及掩耳之势击破刘备,刘备逃奔袁绍。
袁绍是当时北方最强大的一股势力,也是曹操统一北方最强大的敌人。袁氏一门,自袁绍曾祖袁安以下,“四世居三公位”,“门生故吏遍于天下”,势力本就很大,后袁绍取得冀、并、幽、青四州之地,实力大增,有军队数十万人。
袁绍以其长子袁谭、次子袁熙、外甥高干分守青、幽、并三州,后方稳固,兵精粮足,根本不把曹操放在眼里。他挑选精兵十万、战马万匹,志在一举消灭曹操。
建安五年(200年),袁绍命大将颜良等人进兵白马(今滑县),自率大军进屯黎阳(今浚县东),向曹操发动进攻。
曹操的实力比袁绍弱得多,曹操所占的大河以南地区,地盘既小,又是四战之地,残破不堪,还没有完全恢复,物资比不上袁绍那样丰富。
曹操的兵力也远不及袁绍,其总兵力大概不过几万人,投入前线的兵力据《武帝纪》说“兵不满万,伤者十二三”。
裴松之认为此数不准确,曹操的兵力不会如此之少,但曹操兵力远逊于袁绍却是毫无疑问的。
袁绍大军来攻,许都震动。曹操安慰众将说:
“吾知绍之为人,志大而智小,色厉而胆薄,忌克而少威,兵多而分画不明,将骄而众令不一,土地虽广,粮食虽丰,适足以为我奉也。”
二月,袁绍大将颜良等人围攻白马,拉开了大战的序幕。四月,曹操亲自率兵北上解白马之围,他采纳谋士荀攸之计,先进军延津(今延津北一带),做出要渡河袭击袁军的态势,吸引袁军分兵西向,然后突然转向迅速赶往白马。
曹操军突然杀到,袁军措手不及,颜良被关羽斩首,袁军大败,白马之围遂解。曹操救出白马军民,沿黄河西撤。
袁绍闻知,立即命文丑、刘备渡河追赶曹操。曹操见追兵渐近,命军士解鞍放马,并置辎重于道。袁军追兵大至,争抢辎重,阵形混乱。
曹操率领仅有的骑兵突然杀出,大破追兵,阵斩文丑,袁军大震。曹操初战得胜,主动撤军,继续扼守官渡。
八月,袁绍大军连营而进,东西数十里,依沙堆为屯,进逼官渡,曹操分兵坚守营垒,伺机而动。袁军向曹营发动猛攻,先是作高橹、起土山,由上向曹营中射箭,接着又挖地道,欲从地下袭击曹营,皆被曹操以设投石机、挖掘沟壑之法破解。
两军一攻一守,相持近二个月,久战之下,曹操处境极为困难。十月,袁绍从河北运来粮草万余车,派大将淳于琼等带万余人看守,屯于离袁绍大营四十里的乌巢。
这时袁绍谋士许攸因向袁绍献偷袭许都之计不成,且在河北的家眷犯法被抓,心生悔恨,而来投曹操,献计让曹操偷袭乌巢。
曹操大喜,跣足出迎,之后亲率精锐步骑五千人,军队人衔枚,马勒口,换袁军军装乘夜从小路偷袭乌巢。曹操军至乌巢,命四面放火,袁军大乱,淳于琼拒营死守。
袁绍闻知,急忙派兵救援,曹操左右见“贼骑稍近,请分兵拒之。”
曹操大怒说:“贼在背后,乃白!”
士卒都拼死力战,因此大破袁军,斩淳于琼等,尽燔其粮草。
而当袁绍听说曹操袭击乌巢时,认为这正是攻破曹操大营的好机会,因此派去的援兵很少,而以重兵围攻曹操大营。
由于曹操预留兵力精且多,曹营未破,乌巢败讯已经传来,大将张、高览等人率部投降曹操,袁军溃散,袁绍弃军逃回黄河以北。
曹军大获全胜,斩首七万余级,尽获袁军辎重图书珍宝。曹操清点袁绍书信,得到自己部下勾结袁绍的信,尽烧之,说:“当绍之强,孤犹不能自保,而况众人乎!”
客观条件上,曹操处于劣势,但由于他能正确分析客观条件,善于听取别人的正确意见,所以能扬长避短,采用正确的战略战术,使战争向有利于自己的方面转化,经过自己主观上的努力,终于赢得了胜利。
官渡之战,曹操击溃了最大的敌人袁绍,由他统一北方已是大势所趋。官渡之战也是中国战争史上以少胜多、以弱胜强的著名战例。
建安七年(202年),袁绍病死,袁绍的两