刘备逃到了邺城(冀州的治所,在今河北临漳西南),袁绍才感到曹操是个强大的敌人,决心进攻许都。原来劝他攻打许都的田丰,这时候却不赞成马上进攻。他说:“现在许都已经不是空虚的了,怎么还能去袭击呢!曹操兵马虽然少,但是他善于用兵,变化多端,可不能小看他。我看还是作长期的打算。”
袁绍不听田丰的话,田丰一再劝谏,袁绍反认为他扰乱军心,把他下了监狱,他向各州郡发出文书,声讨曹操。公元200年,袁绍集中了十万精兵,派沮授(沮音jū)为监军,从邺城出发进兵黎阳(今河南浚县)。他先派大将颜良渡过黄河,进攻白马(今河南滑县)。
这时候,曹操早已率领兵马回到官渡,听到白马被围,准备亲自去救。他的谋士荀攸劝他说:“敌人兵多,我们人少,不能跟他硬拼。不如分一部分人马往西在延津(在今河南延津西北)一带假装渡河,把袁军主力引到西边。我们就派一支轻骑兵到白马,打他个措手不及。”
曹操采纳了荀攸的意见,来个声东击西。袁绍听说曹操要在延津渡河,果然派大军来堵截。哪儿知道曹操已经亲自带领一支轻骑兵袭击白马。包围白马的袁军大将颜良没防备,被曹军杀得大败。颜良被杀,白马之围也解除了。
袁绍听到曹操救了白马,气得直跳脚。监军沮授劝袁绍把主力留在延津南面,分一部分兵力出击。但是袁绍心急火燎,不听沮授劝告,下令全军渡河追击曹军,并且派大将文丑率领五六千骑兵打先锋。这时候,曹操从白马向官渡撤退。听说袁军来追,就把六百名骑兵埋伏在延津南坡,叫兵士解下马鞍,让马在山坡下蹓跶,把武器盔甲丢得满地都是。
文丑的骑兵赶到南坡,看见这样子,认为曹军已经逃远了,叫兵士收拾那丢在地上的武器。曹操一声令下,六百名伏兵一齐冲杀出来。袁军来不及抵抗,被杀得七零八落。文丑也糊里糊涂地丢了脑袋。
两场仗打下来,袁绍一连损失了他手下的颜良、文丑两员大将,袁军将士打得垂头丧气。但是袁绍不肯罢休,一定要追击曹操。监军沮授说:“我们人尽管多,可没像曹军那么勇猛;曹军虽然勇猛,但是粮食没有我们多。所以我们还是坚守在这里,等曹军粮草完了,他们自然会退兵。”
袁绍又不听沮授劝告,命令将士继续进军,一直赶到官渡,才扎下营寨。曹操的人马也早已回到官渡,布置好阵势,坚守营垒。
袁绍看到曹军守住营垒,就吩咐兵士在曹营外面堆起土山,筑起高台,让兵士们在高台上居高临下向曹营射箭。
曹军只得用盾牌遮住身子,在军营里走动。
曹操跟谋士们一商量,设计了一种霹雳车。这种车上安装着机纽。兵士们扳动机纽,把十几斤重的石头发出去,打坍了袁军的高台,许多袁军兵士被打得头破血流。
袁绍吃了亏,又想出一个办法。他叫兵士在深夜里偷偷地挖地道,打算从地道里钻到曹营去偷袭。但是他们的行动早被曹军发现。曹操吩咐兵士在兵营前挖了一条又长又深的壕沟,切断地道的出口。袁绍的偷袭计划又失败了。
就这样,双方在官渡相持了一个多月。日子一久,曹军粮食越来越少,兵士疲劳不堪。曹操也有点支持不住,写信到许都告诉荀彧,准备退兵。荀彧回信,劝曹操无论如何要坚持下去。
这时候,袁绍方面的军粮却从邺城源源不断地运来。袁绍派大将淳于琼带领一万人马运送军粮,并把大批军粮囤积在离开官渡四十里的乌巢。
袁绍的谋士许攸探听到曹操缺粮的情报,向袁绍献计,劝袁绍派出一小支人马,绕过官渡,偷袭许都。袁绍很冷淡地说:“不行,我要先打败曹操。”
许攸还想劝他,正好有人从邺城送给袁绍一封信,说许攸家里的人在那里犯法,已经被当地官员逮了起来。袁绍看了信,把许攸狠狠地责骂了一通。