消灭眭固、夺取河内之后,曹操已经清晰地意识到,与袁绍之间的决战已不可避免。为了在未来的南北大决战中占据主动,曹操提前进行了周密的战略部署。他命令在青州一带颇具威望与影响力的臧霸等人,率部攻入青州腹地,先后占据齐郡(治所今山东临淄)、北海(治所今山东寿光东南)等重地,以此稳固自己的右翼防线,防止袁绍从东线夹击;同时又派遣心腹大将于禁率军驻守在黄河南岸,严密监视北岸袁军的一举一动,随时戒备袁绍大军南下。
就在曹操全力备战之际,战局又出现了对他极为有利的转机。长期盘踞穰城、与曹操数次交战的张绣,在谋士贾诩的冷静分析与劝说下,最终认清天下大势,决定放弃抵抗,率众归降曹操。曹操闻讯大喜过望,不仅不计前嫌,还对张绣厚加礼遇,当即拜张绣为扬武将军,甚至与之结为联姻。张绣的投降,让曹操彻底解除了来自西南方向的后顾之忧,许都再无侧背之患,可以集中全部力量北上对抗袁绍。
建安四年(199年)十二月,曹操亲自统率主力大军,进驻官渡(今河南中牟县北)。官渡地处鸿沟上游,扼守许都北面咽喉,是北拒袁绍的战略要地,曹操在此修筑工事、囤积粮草,摆开阵势,准备正面迎击袁绍大军,决定北方归属的决战一触即发。
再说刘备。当年徐州牧陶谦病死后,刘备曾一度接管徐州,成为一方诸侯,可不久之后徐州便被吕布袭取,刘备走投无路,只得投奔曹操。曹操素来识人,深知刘备胸怀大志、绝非等闲之辈,是当世英雄,因此先后上表朝廷,举荐刘备为豫州牧、左将军,对其表面厚待,实则暗中提防。
曹操攻破吕布、平定徐州后不久,僭号称帝的袁术在淮南众叛亲离,势穷力竭,打算北上逃往青州,投靠袁绍以求自保。曹操抓住这一机会,派遣刘备率军前往截击袁术。袁术北上之路被断绝,进退失据,最终在江亭愤懑呕血而死。
可刘备并非久居人下之人,一抵达下邳,便趁机发动兵变,袭杀曹操任命的徐州刺史车胄,重新占据徐州,自己亲率主力驻守小沛,公开与曹操决裂。曹操得知后,先派刘岱、王忠率军征讨,却被刘备轻松击败,刘备声势一时大振。
建安五年(200年)正月,汉献帝岳父、车骑将军董承等人,在许都暗中策划发动政变、诛杀曹操,不料事情败露,董承等人悉数被曹操捕杀。此事也让曹操下定决心,必须尽快铲除刘备这一心腹之患,于是决定亲自率军东征刘备。
当时曹军诸将大多不解甚至反对,纷纷进言:“与明公争夺天下的头号大敌,是河北袁绍。如今袁绍大军即将南下,您却置背后强敌于不顾,转而东征刘备。倘若袁绍乘虚从后方突袭,我们将进退无路、腹背受敌!”
曹操却胸有成竹,断言:“刘备乃是当世人杰,今日不将其彻底击溃,日后必成我心腹大患。袁绍虽有吞并天下的大志,却为人多疑寡断、反应迟钝,他必定不会抓住战机迅速出兵。”于是曹操当机立断,指挥大军急速东进,以迅雷不及掩耳之势突袭刘备。刘备猝不及防,全军溃散,只身逃往河北,投奔袁绍。
而此时的袁绍,正是北方最强大的割据势力,也是曹操统一北方路上最强大的对手。
袁氏一族,从袁绍的曾祖父袁安开始,四世之中有五人官居三公之位,门生故吏遍布天下,根基极深。袁绍起兵之后,又先后夺取冀、并、幽、青四州之地,收编黑山军、公孙瓒残部,实力急剧膨胀,麾下拥有军队数十万,粮草堆积如山。他又任命长子袁谭、次子袁熙、外甥高干分别镇守青、幽、并三州,后方稳固,兵精粮足,占据了当时天下最富庶、最安定的河北之地。
建安五年(200年),袁绍正式举兵伐曹,他挑选精兵十万、战马万匹,声势浩大,志在一举南下,攻破许都,消灭曹操,挟天子以令诸侯。袁绍命大将颜良等人率军进围白马(今河南滑县东北),自己亲率主力大军进驻黎阳(今河南浚县东),正式对曹操发起全面进攻,官渡之战的大幕就此拉开。
与袁绍相比,曹操的实力悬殊巨大。
曹操控制的黄河以南地区,久经战乱,残破不堪,是四战之地,生产尚未恢复,粮草、物资储备远不如河北富庶。曹军总兵力不过数万,投入官渡前线的兵力更是稀少,《三国志·武帝纪》记载“兵不满万,伤者十二三”,虽然后世裴松之认为这一数字略有夸张,但曹操兵力远逊于袁绍,是毋庸置疑的事实。
袁绍大军压境的消息传回许都,朝野震动,人心惶惶。面对巨大的实力差距,曹操却镇定自若,当众安慰众将,一针见血地剖析袁绍的致命弱点:
“我深知袁绍的为人,志大而智小,色厉而胆薄,忌克而少威。他兵虽多,却部署混乱、指挥不明;将领骄横,政令不一。如此一来,他土地虽广、粮草虽丰,不过是为我们预先储备的物资罢了。”