公元193年(初平四年)秋,曹操的父亲曹嵩来曹操处路上,被陶谦派兵杀害,曹操遂进兵徐州(治郯,今山东郯城),向东南扩展势力。陶谦退守郯县。不久曹操军粮将尽,撤围回军。
次年夏,曹操再征徐州,略地至东海。曹操征徐州期间,所过大肆杀戮,一路上“鸡犬亦尽,墟邑无复行人”。东郡守备陈宫对曹操不满,于是与陈留太守张邈、张邈之弟张超、从事中郎许汜及王楷等同谋叛乱,迎吕布为兖州牧。吕布为当时名将,先为董卓部将,后与王允定计诛杀董卓。
当时只有鄄城(今属山东)和东郡的范(今山东范县东南)、东阿(今山东阳谷东北)两县尚在曹操掌握之中,分别由司马荀彧和寿张令程昱、东郡太守夏侯惇等坚守,形势异常危急。曹操从徐州赶回,听说吕布屯于濮阳,遂进军围攻濮阳。二军相持百余日,蝗灾大起,双方停战,曹操军还鄄城。此时,曹操失去了兖州,军粮已尽,袁绍派人来劝说想让曹操投靠他,让曹操举家迁到邺县当人质。曹操本打算答应袁绍,多亏程昱劝阻,曹操才打消这个念头。
公元195年(兴平二年),曹操整军再战吕布,三败之,破定陶、庸丘等,平定兖州。吕布逃往徐州投靠刘备。七月,因李傕、郭汜的火拼,汉献帝从长安东归,下诏让各路诸侯勤王。
公元196年(建安元年)八月,曹操迎汉献帝。辛亥,汉献帝封曹操为司隶校尉,录尚书事。庚申,迁都许昌。冬十一月丙戌,汉献帝封曹操为司空,行车骑将军事,百官总己以听。
公元197年(建安二年)春正月,曹操讨伐张绣,军队驻扎在淯水,张绣举众投降,旋即复叛,长子曹昂、侄子曹安民、猛将典韦战死。此后,曹操又两度攻击张绣,都没有彻底击破。秋九月,曹操东征袁术,袁术弃军而逃至淮河,枭袁术留守四将。
公元198年(建安三年)夏四月,曹操遣谒者裴茂率中郎将段煨讨李傕,夷三族。九月,曹操东征徐州,进攻久与他为敌的吕布。在曹军攻势之下,吕布军上下离心,十二月,吕布部将魏续、宋宪等生擒陈宫归降曹操。吕布见大势已去,下城投降。曹操将吕布、陈宫、高顺等人处死,收降吕布部将张辽以及泰山豪杰臧霸、孙观等人,初步控制了徐州。公元199年(建安四年),曹操派史涣、曹仁击破张杨旧部眭固,取得河内郡,把势力范围扩张到黄河以北。
消灭睦固后,为了应对之后与袁绍的战争,曹操预作布置,命在青州有潜在影响的臧霸等人攻入青州,占领齐(治今山东临淄)、北海(治今山东寿光东南)等地,巩固右翼;又命大将于禁屯军黄河南岸,监视袁军。不久,张绣听从谋士贾诩之计,投降曹操,曹操大喜,拜张绣为扬武将军,解除了后顾之忧。公元199年(建安四年)十二月,曹操自率军屯于官渡(今河南中牟北),准备迎击袁绍。
刘备在陶谦死后,曾一度出任徐州牧,后徐州被吕布攻占,刘备投奔曹操。曹操认为刘备是个英雄,先后表他为豫州牧、左将军。曹操攻占徐州不久,淮南袁术准备逃往青州往依袁绍,曹操派刘备去截击,袁术北上不得,呕血而死。
公元200年(建安五年)正月,董承等人谋诛曹操事泄,被曹操杀掉。刘备遂袭杀徐州刺史车胄,占据徐州。
曹操为了免于将来同袁绍作战时前后受敌,决定先消灭在徐州立足未稳的刘备。当时诸将皆怕袁绍乘机来攻许都,曹操对此胸有成竹,说:“刘备,人杰也,今不击,必有后患。袁绍虽有大志,而见事迟,必不动也。”遂进军,以迅雷不及掩耳之势击破刘备,刘备逃奔袁绍。
袁绍是当时北方最强大的一股势力,也是曹操统一北方最强大的敌人。袁氏一门,自袁绍曾祖袁安以下,“四世居三公位”,“门生故吏遍于天下”,势力本就很大,后袁绍取得冀、并、幽、青四州之地,实力大增,有军队数十万人。袁绍以其长子袁谭、次子袁熙、外甥高干分守青、幽、并三州,后方稳固,兵精粮足,根本不把曹操放在眼里。他挑选精兵十万、战马万匹,志在一举消灭曹操。
公元200年(建安五年),袁绍命大将颜良等人进兵白马(今河南安阳滑县),自率大军进屯黎阳(今河南浚县东),向曹操发动进攻。曹操的实力比袁绍弱得多(《三国志》中说不足一万),曹操所占的大河以南地区,地盘既小,又是四战之地,残破不堪,还没有完全恢复,物资比不上袁绍那样丰富。曹操的兵力也远不及袁绍,其总兵力大概不过几万人,投入前线的兵力据《武帝纪》说“兵不满万,伤者十二三”。裴松之认为此数不准确,曹操的兵力不会如此之少,但曹操兵力远逊于袁绍却是毫无疑问的。
袁绍大军来攻,许都震动。曹操安慰众将说:“吾知绍之为人,志大而智小,色厉而胆薄,忌克而少威,兵多而分画不明,将骄而众令不一,土地虽广,粮食虽丰,适足以为我奉也。”
二月,袁绍大将颜良等人围攻白马,拉开了大战的序幕。四月,曹操亲自率兵北上解白马之围,他采纳谋士荀攸之计,先进军延津(今河南延津北,白马以西),做出要渡河袭击袁军的态势,吸引袁军分兵西向,然后突然转向迅速赶往白马。曹操军突然杀到,袁军措手不及,颜良被关羽斩首,袁军大败,白马之围遂解。曹操救出白马军民,沿黄河西撤。袁绍闻知,立即命文丑、刘备渡河追赶曹操。曹操见追兵渐近,命军士解鞍放马,并置辎重于道。袁军追兵大至,争抢辎重,阵形混乱。曹操率领仅有的骑兵突然杀出,大破追兵,阵斩文丑。袁军大震。曹操初战得胜,主动撤军,继续扼守官渡。
八月,袁绍大军连营而进,东西数十里,依沙堆为屯,进逼官渡。曹操分兵坚守营垒,伺机而动。袁军向曹营发动猛攻,先是作高橹、起土山,由上向曹营中射箭,接着又挖地道,欲从地下袭击曹营,皆被曹操以设投石机、挖掘沟壑之法破解。两军一攻一守,相持近二个月。久战之下,曹操处境极为困难。
十月,袁绍从河北运来粮草万余车,派大将淳于琼等带万余人看守,屯于离袁绍大营四十里的乌巢。这时袁绍谋士许攸因向袁绍献偷袭许都之计不成,且在河北的家眷犯法被抓,心生悔恨,而来投曹操,献计让曹操偷袭乌巢。曹操大喜,跣足出迎,之后亲率精锐步骑五千人,军队人衔枚,马勒口,换袁军军装乘夜从小路偷袭乌巢。曹操军至乌巢,命四面放火,袁军大乱,淳于琼拒营死守。袁绍闻知,急忙派兵救援,曹操左右见“贼骑稍近,请分兵拒之。”曹操大怒说:“贼在背后,乃白!”士卒都拼死力战,因此大破袁军,斩淳于琼等,尽燔其粮草。而当袁绍听说曹操袭击乌巢时,认为这正是攻破曹操大营的好机会,因此派去的援兵很少,而以重兵围攻曹操大营。由于曹操预留兵力精且多,曹营未破,乌巢败讯已经传来,大将张郃、高览等人率部投降曹操,袁军溃散。袁绍弃军逃回黄河以北。曹军大获全胜,斩首七万余级,尽获袁军辎重图书珍宝。曹操清点袁绍书信,得到自己部下勾结袁绍的信,尽烧之,说:“当绍之强,孤犹不能自保,而况众人乎!”
客观条件上,曹操处于劣势,但由于他能正确分析客观条件,善于听取别人的正确意见,所以能扬长避短,采用正确的战略战术,使战争向有利于自己的方面转化,经过自己主观上的努力,终于赢得了胜利。官渡之战,曹操击溃了最大的敌人袁绍,由他统一北方已是大势所趋。官渡之战也是中国战争史上以少胜多、以弱胜强的著名战例。
曹操