汉献帝建安五年(公元200年)二月,袁绍任命沮授为监军,统率十万大军,从邺城(今河南安阳北部)出发,进攻许昌。袁绍亲率十余万冀州精兵到黄河北岸的黎阳(今河南浚县东北)建立自己的指挥部。相隔曹操的驻地官渡(今河南中军东北部)已不远,袁绍企图一举消灭曹军。
曹操当时是东汉献帝时期的丞相,他挟天子以令诸侯、巧用计谋,先后打败了吕布、袁术和张绣等割据势力。这时北方仅剩的势力最大的就是袁绍。他据有冀、青、幽、并四州,兵多将广,谋士很多,粮食充足。他见曹操势力日强,一直想进攻许昌,与曹军决战。曹操则把袁绍视为统一北方的最大障碍,决心要铲除他。双方虎视眈眈,秣马厉兵,寻求机会开战。曹操在打败袁术以后,在一次议事会上向谋士们询问讨伐袁绍的良策。
著名谋士郭嘉说:“袁绍虽然兵多,但他不会用兵,而且军纪松懈,战斗力不强;谋士虽多,但互相嫉妒。此外,袁绍任人唯亲,爱听谗言,优柔寡断,多谋少决,是非不分。”他认为袁军有这么多不利因素,兵将虽多,但没有什么可怕。与此相反,他认为曹操治军严明,唯才是用,多谋善断,雷厉风行,用兵如神,兵力虽少,定能以少胜多,打败袁军。
谋士们的分析与曹操的估计完全一致,袁绍在曹操心目中早有定论。他在不久前与刘备煮酒论英雄时,就认为“袁绍色厉内荏,优柔寡断,缺少谋略,大事怕死,小利拼命,不是英雄”。曹操真是料敌如神,以后的事变进程,完全和他与其谋士们料定的那样:袁绍拥兵数十万,但不会选择战机;谋士虽多,互相嫉妒;袁绍不辨是非,拒纳良策。
当曹操在此以前,用20万兵力攻打徐州时,刘备被困在小沛,派孙乾向袁绍求救,谋士田丰力主趁曹操后方空虚时,发兵突袭许昌,以解徐州之围。但袁绍却以小儿患病,无心过问战事为由,对他的计谋漠然置之不理,气得田丰直跺脚叹气说:“看到别人危难而不顾,心里只有儿子,多好的战机失掉了!”
刘备被曹操打败以后来投袁绍,他一时高兴,便要出兵攻打曹操。田丰认为时机不合适,便冒险进谏说:“现在曹操刚刚胜利,士气正旺,不能现在和他打,应该等待时机出兵。”袁绍决意不听,田丰急得跪在地上叩头说:“主公如果不听我的话,肯定出师不利!”袁绍听他这样说,勃然大怒,怪他扰乱军心和民心,竟要杀他,经刘备说情,才改为囚禁。
袁军在和曹军作战中,互有胜负,最后,袁绍集中70万大军攻打官渡,企图从这里突破,去攻取许昌。曹操亲自率7万精兵来与他决战。田丰在狱中知道消息以后,又致函袁绍,希望他不要轻易动兵,要等待时机,以免失利。
这封信被一个与田丰作对的谋士逢纪看见,他冷言冷语挑唆说:“主人顺应天意伐曹是正义之师,田丰为何说不吉利话?”袁绍听了,更厌恶田丰,又要杀他,经部下劝阻才罢。他愤恨地说:“等我打败了曹操,回来再治他的罪。”
袁军和曹军在官渡对峙达两月之久,初期战斗,互有死伤。袁军曾在城下筑起土山,居高临下,向城中士兵放箭,曹军一度很惊慌,军士们每天被迫躺在地上用挡箭牌防箭,以减少伤亡。曹军有个谋士叫刘晔,他设计了一种“发石车”,又叫“霹雳车”,只要对方一射箭,这里就用发石车对付他们。曹操一声号令,拽动石车,炮石腾空飞起,准确地落在土山上,巨石如雨,把弓箭手砸伤或砸死,吓得袁军士兵以后不敢再利用土山射箭了。
大军作战,粮草先行。双方对峙,从8月到9月底,日期一长,粮草供应异常紧张。曹军渐渐感到疲乏,特别是粮食调运困难,不易及时保证供应。曹操一度想从官渡撤军回许昌,但事关重大,他一时下不了决心,便写信去征询谋士荀縠的意见。荀縠很快回信,力主曹操坚持下去,不能撤军。他在信中说:“我军与袁军的对阵,形势有点像当年楚、汉相争的局面,现在正是寻找战机的时候,千万不能退军!”
曹操觉得信中的话说到他心里去了,便命令全军将士一定要死守阵地,再也不提撤兵之事。就在这个时候,曹操的部将徐晃抓到了袁军的一个侦探,他供认了一个重要消息:“袁绍派大将军韩猛运军粮来了,派我先来探路。”曹操的谋士荀攸知道以后,要曹操派兵劫住袁军运粮车,全部予以烧毁。
袁绍的谋士审配知道粮车被劫烧以后,对他说:“打仗以粮食为重,乌巢是屯粮重地,必须派重兵把守。”袁绍立即派大将淳于琼率领两万精兵加强乌巢护粮兵力。但淳于琼是个酒鬼,脾气暴躁,动辄鞭笞士兵。他到乌巢以后,每日酗酒,将士们怕他,无人敢劝。袁绍派贪酒将军护粮,结果误了大事。
袁绍帐下谋士许攸,是曹操旧友,他截获了曹操送给驻扎在许昌的荀縠的密信,信中说:“军中粮草已经用完,望速运粮来。”跑去对袁绍说:“曹操军粮用尽,他的精兵尽在官渡,许昌必然空虚。主公派支军队袭击许昌,曹操老巢即可捣毁。”但袁绍不信任许攸,因为他刚得到审配从邺城发来的文书,其中揭发许攸在冀州任职时受人贿赂。他听许攸献计以后,不但不给予嘉奖,反而怒冲冲地斥责他:“你的行为不端,有什么脸面向我献计?你与曹操是旧交,想为曹贼行骗吗?退下,以后不许见我。”
许攸满以为可以邀功,想不到袁绍给他当头一棒,他退出帐外,仰天长叹:“天哪!忠言逆耳啊!”他反复考虑,觉得袁绍昏庸无能,迟早必败,不值得为他效忠,当晚就潜出营去投曹操。
夜深人静,曹操正躺在床上无法入睡,为军中缺粮发愁,他听说许攸深夜求见,高兴得连鞋子也来不及穿,光脚出帐迎接,挽着他的臂膀走入大帐,然后朝他拜伏在地上叩头不已。许攸慌忙扶起曹操说:“您是汉朝丞相,我不过是一个平民百姓,您何必这样谦恭?”曹操说:“我们是故友,何必分官职上下尊卑呢?”许攸异常感动:“唉,我不会择主,在袁绍手下谋事,言不听、计不从,今天特来投奔您啊!”
曹操说:“您肯来我这里,我的事业就成功了,请您教我破袁绍的计谋。”许攸说:“我有一计,可使袁绍百万之众不战自灭。”他告诉曹操,袁绍的军粮辎重都积存在乌巢,由一个酒鬼将军防守,只要派一支精兵,伪装成袁军蒋奇部去乌巢护粮,就可乘机烧掉袁绍军粮。袁军无粮,不战自溃。
曹操十分高兴,立即亲选5000精兵,伪装成袁军,连夜赶往乌巢烧粮。沿途哨兵查问时,他们一律回答“蒋奇将军奉命去乌巢护粮”,没有遇到任何怀疑和阻拦,顺利通过警戒。曹军在拂晓时分到达乌巢,立即击鼓冲入粮仓营寨放火。霎时火光冲天,寨内大乱。守将淳于琼这时正醉倒在床上酣睡,被吵醒后他正要出去查问,立即被曹军抓获。曹军横冲直撞,见粮囤就烧,见袁兵就杀;乌巢粮仓顷刻化为灰烬,护粮军士非死即逃。
袁绍见曹军去乌巢烧粮,估计曹营空虚,便派兵去劫寨,但被曹操预先安排好的伏兵杀得大败而归。袁绍70万大军没有了粮食,立时大乱。袁军内部发生分裂,大将张郃、高览率所属部队投降曹操。曹军趁机发起总攻,把袁军杀得落花流水,袁绍父子仅带800骑兵逃回河北。