后来建安四年,袁绍最终战胜公孙瓒,据幽州、冀州、青州、并州,尽有河北之地,意欲南向以争天下。这样,华北最重要的两个政治军事集团,决战势所难免。起初形势袁强曹弱。袁绍已无后顾之忧,地广人众,可动员的兵力在十万以上。
曹操则是处于四战之地,除了北方的袁绍,关中诸将尚在观望,南边刘表、张绣不肯降服,东南孙策蠢蠢欲动,暂时依附的刘备也是貌合神离。尽管如此,当时的一些有识之士,包括曹操的谋士荀彧、郭嘉,还在张绣麾下的贾诩,以及凉州从事杨阜,在综合分析了曹、袁的优劣后,认为袁绍外宽内忌,好谋无决,他们都看好曹操,认为局势会向着有利于曹的方向变化。建安三年十月,河内郡太守张杨欲出军救援吕布时却为部下杨丑所杀,曹操解除进攻徐州吕布的后顾之忧,十一月,吕布被曹操消灭,建安四年,张杨旧部眭固杀杨丑,欲北投袁绍,曹操派史涣、曹仁击破眭固,取得河内郡,把势力范围扩张到黄河以北,六月,袁术病死,十一月张绣投降曹操。刘表坐观成败,孙策保守江东。局势变得更加明朗。建安四年六月,袁绍挑选精兵十万,战马万匹,企图南下进攻许都,官渡之战的序幕由此拉开。
袁绍举兵南下的消息传到许都,曹操部将多认为袁军强大不可敌。但曹操却根据他对袁绍的了解,认为袁绍志大才疏,胆略不足,刻薄寡恩,刚愎自用,兵多而指挥不明,将骄而政令不一,于是决定以所能集中的数万兵力抗击袁绍的进攻。为争取战略上的主动,他作出如下部署:派臧霸率精兵自琅玡入青州,占领齐、北海、东安等地,牵制袁绍,巩固右翼,防止袁军从东面袭击许都;曹操率兵进据冀州黎阳,令于禁率步骑二千屯守黄河南岸的重要渡口延津,协助扼守白马的东郡太守刘延,阻滞袁军渡河和长驱南下,同时以主力在官渡一带筑垒固守,以阻挡袁绍从正面进攻;派人镇抚关中,拉拢凉州,以稳定翼侧。从以上部署看,曹操所采取的战略方针,不是分兵把守黄河南岸,而是集中兵力,扼守要隘,重点设防,以逸待劳,后发制人。从当时情势而言,这种部署是得当的。首先,袁绍兵多而曹操兵少,千里黄河多处可渡,如分兵把守则防不胜防,不仅难以阻止袁军南下,且使自己本已处于劣势的兵力更加分散。其次,官渡地处鸿沟上游,濒临汴水。鸿沟运河西连虎牢、巩、洛要隘,东下淮泗,为许都北、东之屏障,是袁绍夺取许都的要津和必争之地。加上官渡靠近许都,后勤补给也较袁军方便。
十二月,当曹操正部署对袁绍作战时,刘备起兵反曹,占领下邳,屯据沛县。刘备军增至数万人,并与袁绍联系,打算合力攻曹。曹操为保持许昌与青、兖二州的联系,避免两面作战,于次年二月亲自率精兵东击刘备,迅速占领沛县,转而进攻下邳,迫降关羽。刘备全军溃败,只身逃往河北投奔袁绍。当曹、刘作战正酣之时,袁绍谋士田丰建议袁绍"举军而袭其后",但袁绍以幼子有病为辞拒绝采纳,致使曹操从容击败刘备回军官渡。
建安五年正月,袁绍派陈琳书写檄文并发布,檄文中把曹操骂得无法忍受。二月进军黎阳,企图渡河寻求与曹军主力决战。他首先派颜良进攻白马的东郡太守刘延,企图夺取黄河南岸要点,以保障主力渡河。四月,曹操为争取主动,求得初战的胜利,亲自率兵北上解救白马之围。此时谋士荀攸认为袁绍兵多,建议声东击西,分散其兵力,先引兵至延津,伪装渡河攻袁绍后方,使袁绍分兵向西,然后遣轻骑迅速袭击进攻白马的袁军,攻其不备,定可击败颜良。曹操采纳了这一建议,袁绍果然分兵延津。曹操乃乘机率轻骑,派张辽、关羽为前锋,急趋白马。关羽迅速迫近颜良军,冲进万军之中杀死颜良并斩首而还,袁军溃败。曹操解了白马之围后,迁徙白马的百姓沿黄河向西撤退。袁绍率军渡河追击,军至延津南,派大将文丑与刘备继续率兵追击曹军,曹操当时只有骑兵六百,驻于南阪(在白马南)下,而袁军达五六千骑,尚有步兵在后跟进。曹操令士卒解鞍放马,并故意将辎重丢弃道旁。袁军一见果然中计,纷纷争抢财物。曹操突然发起攻击,终于击败袁军,杀了文丑,顺利退回官渡。颜良、文丑都是河北名将,却被一战而斩,袁绍军队的锐气被挫伤。
刘辩看着竹简信上的话,曹操说袁绍百万大军从黎阳而出,而行军向官渡的方向。这就是官渡之战的前兆啊。
“官渡之战,要开始了吗……”刘辩不禁呢喃道。
官渡,可以说是东汉末年除了赤壁外的最大的一场战争了。袁绍和曹操这两尊巨头的争霸,也是曹操统一北方的一战。不得不说,官渡这一站,曹操打的确实好。不过现在提前了五年,而且还是在他打并州的时候,这就有点难为人了啊。
贾诩看了竹简信,随即说道:“主公,曹操在信上说,袁绍百万大军此时已经聚于白马,正向着官渡前行,他这是要打曹操啊。曹操说如果主公你不能十日后打下并州,就去支援他,否则曹操被灭,袁绍就真的统一半壁江山了。到时候如果咱们没打下并州,那被灭的,可不止曹操啊。”
徐庶也随即说道:“主公,十日我们怎么可能打下并州。吕布加上袁绍援助他的二十万兵马,也有五十余万兵马,我们加上马腾的兵马也不过五十万,胜负尚且难说,怎么可能十日打下并州。主公,我意撤军。”