曹操进攻刘备,大败刘备,俘虏了他的妻子儿女;接着攻克下邳,活捉关羽;又击败了昌豨。刘备逃往青州,通过袁谭(袁绍长子,时任青州刺史)投奔袁绍。袁绍听说刘备来了,亲自到邺城(今河北临漳西南)二百里外迎接,留刘备住了一个多月,刘备逃散的士兵逐渐前来归附。
曹操率军回到官渡,袁绍这才商议进攻许都。田丰说:“曹操既然击败了刘备,那么许都就不再空虚了。而且曹操善于用兵,变化无穷,兵力虽少,却不可轻视。现在不如用持久战来对付他。将军您占据山川险固之地,拥有四州之众,对外结交英雄,对内修治农业,训练军队。然后选拔精锐部队,分成几支奇兵,乘虚轮番出击,骚扰黄河以南地区。敌人救援右边,我们就攻击左边;救援左边,我们就攻击右边,使敌人疲于奔命,百姓不能安心生产。我们还没疲劳,敌人已经困乏。不到三年,就可以坐着平定曹操了。如今放弃在庙堂上策划就能取胜的策略,而想通过一战来决定成败,万一不能如愿,后悔就来不及了!”袁绍不听。田丰极力劝谏,触怒了袁绍,袁绍认为他败坏军心,下令给他戴上刑具关押起来。
于是袁绍向各州郡发布檄文,历数曹操的罪恶。二月,进军黎阳。
沮授在出发前,召集他的宗族,把家产分给他们,说:“权势在握时,权威无所不及;一旦失势,连自身都不能保全,可悲啊!”他的弟弟沮宗说:“曹操的兵马敌不过我们,您怕什么?”沮授说:“凭曹操的明智谋略,又挟持天子作为资本,我们虽然战胜了公孙瓒,但士兵实在疲惫不堪,而且主上骄傲,将领奢侈,军队的败亡,就在这一战了。扬雄说过:‘六国纷纷扰扰,只不过是为秦取代周朝削弱姬姓作准备罢了。’(蚩蚩:纷扰貌;嬴:秦姓;姬:周姓)大概说的就是今天这种情况吧!”
振威将军程昱率领七百名士兵守卫鄄城(今山东鄄城北)。曹操想给他增加二千士兵,程昱不肯,说:“袁绍拥有十万大军,自以为所向无敌,现在看到我兵力少,一定瞧不起,不会来进攻。如果增加我的兵力,袁绍经过时就非进攻不可;进攻就必定攻克,白白地损失两处的实力。请您不必担心!”袁绍听说程昱兵少,果然没有去进攻。曹操对贾诩说:“程昱的胆量,超过了古代的勇士孟贲和夏育!”
袁绍派大将颜良在白马(今河南滑县东)进攻东郡太守刘延。沮授说:“颜良性格急躁狭隘,虽然骁勇,但不能独当一面。”袁绍不听。
夏季,四月,曹操率军北上救援刘延。谋士荀攸说:“如今我们兵力少,难以抵挡,必须分散敌人的兵力才行。您先到延津(今河南延津北),做出将要渡河袭击敌人后方的姿态,袁绍必定分兵向西应战。然后您率领轻装部队迅速袭击白马,攻其不备,就可以擒获颜良。”曹操采纳了他的建议。袁绍听说曹军要渡河,果然分兵向西阻截。曹操于是率军急速直扑白马,距白马十余里时,颜良才发觉,大吃一惊,仓促迎战。曹操派张辽、关羽作为先锋出击。关羽望见颜良的旗帜和车盖,策马冲入万军之中,刺死颜良,斩下他的头颅返回,袁绍军中无人能挡。于是解了白马之围,曹操将白马城的百姓沿黄河向西迁徙。
袁绍要渡过黄河追击曹操。沮授劝阻说:“胜负之间,变化无常,不能不周密考虑。现在应留大军驻扎在延津,分出一部分兵力去官渡,如果他们取胜,再回来迎接大军渡河也不晚;如果他们遇到灾难,我们的大部队还可以保全。”袁绍不听。沮授在渡河时叹息道:“主上狂妄自满,下边将领贪功冒进,悠悠黄河啊,我还能渡回来吗!”于是称病辞职。袁绍不批准,但心中恨他,又把他的部队交由郭图指挥。
袁绍大军到达延津以南,曹操指挥军队驻扎在营垒南面的山坡下,派人登上营垒了望袁军,报告说:“大约有五六百骑兵。”过了一会儿,又报告说:“骑兵在增多,步兵多得数不清。”曹操说:“不用再报告了。”命令骑兵解下马鞍,放马休息。这时,从白马西迁的辎重车辆正行进在路上。将领们认为敌人骑兵多,不如退守营垒。荀攸说:“这正是引诱敌人的方法,怎么能撤走呢!”曹操看着荀攸会心一笑。袁绍的骑兵大将文丑与刘备率领五六千骑兵先后赶到。将领们又说:“可以上马了。”曹操说:“还不到时候。”过了一会儿,袁军骑兵越来越多,有的已分头去抢辎重。曹操说:“可以上马了!”于是全体上马。当时曹军骑兵不足六百人,曹操挥军出击,大败袁军,斩杀文丑。文丑与颜良都是袁绍手下的名将,两次交战,全被曹军杀死,袁绍军中士气大受打击。
起初,曹操很欣赏关羽的为人,但观察他的心思神气,没有长久留下的意思,便派张辽去探问他的真实想法。关羽叹息说:“我非常清楚曹公待我恩厚;但是我受刘将军(刘备)深恩,发誓要同生共死,不能背叛他。我终究不会留下,但一定要立下功劳报答曹公后才离去。”张辽把关羽的话报告给曹操,曹