刘备投靠袁绍,袁绍决心进攻许都。原来劝他攻打许都的田丰,这时却不赞成马上进攻。他说:“现在许都已经不是空虚的了,怎么还能去袭击呢?曹操兵马虽然少,但是他善于用兵,诡计多端,可不能小看他。我看还是作长期的打算。”
袁绍不听田丰的话,田丰一再劝谏,袁绍反认为他扰乱军心,把他投进监狱,并向各州郡发出文书,声讨曹操。
公元200年2月,袁绍任命沮授为监军,统领十万大军,从邺城(今河南省安阳市北)出发,进攻许昌。袁绍则亲率十余万冀州精兵到黄河北岸的黎阳(今河南省浚县东北),建立自己的指挥部。他派大将郭图和颜良进攻和黎阳隔岸相对的白马(今河南省滑县东)。袁绍企图引诱曹操离开官渡(今河南中牟县东北),然后一举消灭曹军。沮授向袁绍建议:颜将军虽然勇猛,但骄傲自大,缺少智谋,不适合单独统兵作战。可袁绍固执己见,下令迅速渡河,打下白马。
三国时代称运兵船为走舸,也类似于后汉时代的露桡。《三国志·周瑜传》提到,黄盖“豫备走舸,各系大船后”,黄盖放船引火后,就是改乘这些走舸。值得一提的是在正史中,《三国志》是第一个用舸这个字,更是唯一提到走舸这名词的正史。
这时候,曹操早已率领兵马回到官渡,听到白马被围,准备亲自去救。他的谋士荀攸劝他说:“敌人兵多,我们人少,不能跟他硬拼。不如分一部分人马往西在延津(在今河南延津西北)一带假装渡河,把袁军主力引到西边。我们再派一支轻骑兵到白马,打他个措手不及。”
曹操采纳了荀攸的意见,来个声东击西。袁绍听说曹操要在延津渡河,果然派大军来堵截。哪儿知道曹操已经亲自带领一支轻骑兵袭击白马。包围白马的袁军大将颜良没防备,被曹军杀得大败。颜良也被一心报答曹操厚恩的关羽所杀,白马之围也解除了。
袁绍听到曹操救了白马,气得直跳脚。监军沮授劝袁绍把主力留在延津南面,分一部分兵力出击。但是袁绍心急火燎,不听沮授劝告,下令全军渡河追击曹军,并且派大将文丑率领五六千骑兵打先锋。这时候,曹操从白马向官渡撤退。听说袁军来追,就把六百名骑兵埋伏在延津南坡,叫兵士解下马鞍,让马在山坡下蹓跶,把武器盔甲丢得满地都是。
文丑的骑兵赶到南坡,看见这样子,以为曹军已经逃远了,叫兵士收拾那丢在地上的武器。曹操一声令下,六百名伏兵一齐冲杀出来。袁军来不及抵抗,被杀得七零八落。文丑也糊里糊涂地被关羽杀死。
两场仗打下来,袁绍一连损失了他手下的颜良、文丑两员大将,袁军将士被打得垂头丧气。但是袁绍不肯罢休,一定要追击曹操。监军沮授说:“尽管我们人多,可不像曹军那么勇猛;曹军虽然勇猛,但是粮食没有我们多。所以我们还是坚守在这里,等曹军粮草用尽,他们自然会退兵。”
袁绍又不听沮授劝告,命令将士继续进军,一直赶到官渡,才扎下营寨。曹操的人马也早已回到官渡,布置好阵势,坚守营垒。
袁绍看到曹军守住营垒,就吩咐兵士在曹营外面堆起土山,筑起高台,让兵士们在高台上居高临下向曹营射箭。
曹军只得用盾牌遮住身子,在军营里走动。
曹操跟谋士们一商量,设计了一种霹雳车。这种车上安装着机纽。兵士们扳动机纽,把十几斤重的石头发出去,打坍了袁军的高台,许多袁军兵士被打得头破血流。
袁绍吃了亏,又想出一个办法。他叫兵士在深夜里偷偷地挖地道,打算从地道里偷袭曹营。但是他们的行动早被曹军发现。曹操吩咐兵士在兵营前挖了一条又长又深的壕沟,切断地道的出口。袁绍的偷袭计划又失败了。
就这样,双方在官渡相持了一个多月。时间一长,曹军粮食越来越少,兵士疲劳不堪。
曹操有点支持不住,写信到许都告诉荀彧,准备退兵。荀彧回信,劝曹操无论如何要坚持下去。
这时候,袁绍方面的军粮却从邺城源源不断地运来。袁绍派大将淳于琼带领一万人马运送军粮,并把大批军粮囤积在离开官渡四十里的乌巢。
袁绍的谋士许攸探听到曹操缺粮的情报,向袁绍献计,劝袁绍派出一小支人马,绕过官渡,偷袭许都。袁绍很冷淡地说:“不行,我要先打败曹操。”
许攸还想劝他,正好有人从邺城送给袁绍一封信,说许攸家里的人在那里犯法,已经被当地官员逮了起来。袁绍看了信,把许攸狠狠地责骂了一通。
许攸又气又恨,想起曹操是他的老朋友,就连夜逃出袁营,投奔曹操。
曹操在大营里刚脱下靴子想睡,听说许攸来投奔他,高兴得来不及穿靴子,光着脚跑出来欢迎许攸,说:“好啊!您来了,我的大事就有希望了。”
许攸坐下来后说:“袁绍来势很猛,您打算怎么对付他?现在你们的粮食还有多少?”
曹操说:“还可以支持一年。”
许攸冷冷一笑,说:“没有那么多吧!”
曹操改口说:“对,只能支持半年。”
许攸装出生气的样子说:“您难道不想打败袁绍吗?为什么在老朋友面前还要说假话呢!”
曹操只好实说:“军营里的粮食,只能维持一个月,您看怎么办?”
许攸说:“我知道您的情况很危急,特地来给您捎个信。现在袁绍有一万多车粮食、军械,全都放在乌巢。淳于琼的防备很松。您只要带一支轻骑兵去袭击,把他的粮草全部烧光,不出三天,他就不战自败。”
经过周密策划后,一天夜里,曹操派曹洪等将军守营,以防袁军前来偷袭;自己和张辽、于禁、徐晃等,精选五千名步骑兵,打上袁军的旗号,悄悄离开了官渡,向乌巢进发。途中碰上袁军哨兵,张辽骗他们说:“我们是蒋奇的人马,是袁将军派来加强乌巢守备的。”不等袁军哨军靠近,张辽就走近一步,压低了声音,故作神密地说:“袁将军听说曹操要来偷袭乌巢,就派我们赶来增援。”袁军哨兵一见旗上斗大的“袁”字,而且因乌巢就在袁军大营之后,怎么也不会有敌人来,便不再怀疑,放他们过去了。黎明以前,曹军抵达了乌巢。而此刻夜夜饮酒的淳于琼睡得正香,袁军还来不及穿衣,曹军就冲了进来。霎时间,粮囤到处起火,浓烟滚滚,直冲云霄,淳于琼也被曹操大将乐进一刀收拾了,不多久战斗就结束了。
乌巢这边火光冲天,不远处的袁营看得真切。大将张郃劝袁绍立即援助淳于琼,同时切断曹军退路,可袁绍在关键时刻一错再错,听信谗言,置乌巢于不顾,让张郃、高览二将前去袭击曹军大营。张郃苦苦劝说:“曹操很会用兵。他既然派精兵去偷袭乌巢,那么官渡的守备也一定不会放松。还是先去援助淳于琼吧!”袁绍仍执迷不悟,张郃、高览只好勉强带兵出发。袁军进攻官渡,遭到曹洪守军的坚决抵抗;背后又受到从乌巢回师官渡的曹军的猛烈攻击。张郃腹背受敌,抵挡不住,加之不满袁绍的虚伪奸诈,就和高览一起投降了曹操。
乌巢粮草被烧,张、高二将投降,袁军果然不战自乱,曹军乘胜全军出击,袁绍还没来得及穿上盔甲,只穿着便服,扎着头巾,带着八百名骑兵仓皇逃过了黄河。
经过这场决战,曹操用极少的兵力战胜了拥兵数十万的袁绍,使之再也无法恢复原来的势力。过了二年,袁绍病死。曹操又花了七年时间,扫平了袁绍的残余势力,统一了北方,为以后三国鼎立的局面,奠定了基础。