曹操如今还只有十五万兵力,仅仅只有袁绍的一半,袁绍举兵南下的消息传到许都,曹操部将多认为袁军强大不可敌。
但曹操却根据他对袁绍的了解,认为袁绍志大才疏,胆略不足,刻薄寡恩,刚愎自用,兵多而指挥不明,将骄而政令不一,于是决定以所能集中的十五万兵力抗击袁绍的进攻。
(本书将兵力扩大些,现在的曹操肯定没有那么多兵力,袁绍也没有三十万。)
建安五年(200年)正月,袁绍派陈琳书写檄文并发布,檄文中把曹操骂得无法忍受。
二月进军黎阳,企图渡河寻求与曹军主力决战。
他首先派颜良进攻白马的东郡太守刘延,企图夺取黄河南岸要点,以保障主力渡河。
四月,曹操为争取主动,求得初战的胜利,亲自率兵北上解救白马之围。
此时谋士荀攸认为袁绍兵多,建议声东击西,分散其兵力,先引兵至延津,伪装渡河攻袁绍后方,使袁绍分兵向西,然后遣轻骑迅速袭击进攻白马的袁军,攻其不备,定可击败颜良。
曹操采纳了这一建议,袁绍果然分兵延津。
曹操乃乘机率轻骑,派典韦、夏侯渊为前锋,急趋白马。
典韦迅速迫近颜良军,冲进万军之中,如入无人之境,双手大戟舞得霍霍生风,几招劈死颜良,并斩首尔还,主将一死,袁军立马溃败。
曹操解了白马之围后,迁徙白马的百姓沿黄河向西撤退,袁绍率军渡河追击,军至延津南,派大将文丑继续率兵追击曹军。
曹操当时只有骑兵600,驻于南阪(在白马南)下,而袁军达五六千骑,尚有步兵在后跟进。
曹操令士卒解鞍放马,并故意将辎重丢弃道旁。
袁军一见果然中计,纷纷争抢财物。
曹操突然发起攻击,终于击败袁军,杀了文丑(被徐晃斩杀,一说是被马蹄踩死,并不是关羽斩杀)顺利退回官渡。
袁军初战失利,但兵力仍占优势。七月,进军阳武(今河南中牟北)准备南下进攻许昌。
八月,袁军主力接近官渡,依沙堆立营,东西宽约数十里,曹操也立营与袁军对峙。
九月,曹军一度出击,与袁军交战不利,退回营垒坚守。
袁绍构筑楼橹,堆土如山,用箭俯射曹营。
曹军制作了一种抛石装置的霹雳车,发石击毁了袁军所筑的楼橹。
袁军又掘地道进攻,曹军也在营内掘长堑相抵抗,粉碎了袁军的计策。
双方相持3个月,曹操外境困难,前方兵少粮缺,士卒疲乏,后方也不稳固,曹操几乎失去坚守的信心。
一日见运粮士兵疲于奔命,于心不忍,不禁脱口而出,“却十五日为汝破绍,不复劳汝矣!”
曹操写信给荀彧,商议要退守许都,荀彧回信说:“袁绍将主力集结于官渡,想要与公决胜负。公以至弱当至强,若不能制,必为所乘,这是决定天下大势的关键所在。当年楚、汉在荥阳、成皋之间,刘邦、项羽没有人肯先退一步,以为先退则势屈。现在公以一当十,扼守要冲而使袁绍不能前进,已经半年了。情势已然明朗,绝无回旋的余地,不久就会发生重大的转变。这正是出奇制胜的时机,千万不可坐失。”
于是曹操决心继续坚守待机,同时加强防守,命负责后勤补给的任峻采取10路纵队为一部,缩短运输队的前后距离,并用复阵(两列阵)加强护卫,防止袁军袭击;另一方面积极寻求和捕捉战机,击败袁军,不久派曹仁、史涣截击、烧毁袁军数千辆粮车,增加了袁军的补给困难。
同年十月,袁绍又派车运粮,并令淳于琼率兵万人护送,屯积在袁军大营以北约20公里的故市(河南延津县内)、乌巢(今河南延津东南)恰在这时,袁绍谋士许攸投奔曹操,建议曹操轻兵奇袭乌巢,烧其辎重。
曹操立即付诸实行,留曹洪、荀攸守营垒,亲自率领步骑5000,冒用袁军旗号,人衔枚马缚口,各带柴草一束,利用夜暗走小路偷袭乌巢。