黄巾起义被镇压后,各地割据势力迅速发展起来,东汉政权名存实亡。在割据的地主武装集团中,势力较大的是黄河中下游以北的袁绍和黄河中下游以南的曹操。公元196年,曹操把献帝迎到许昌,改年号为建安,曹操总揽朝政,政治上“挟天子以令诸侯”。这引起力量强大的袁绍的不满,决心打败曹操,自己称帝。
当时,袁绍占据青、冀、幽、并四州,有部众数十万人,地方大,军队多,军粮充足,相比之下,曹操的处境很不利。曹操和他的谋士分析双方情况,认为袁绍集团内部存在许多致命弱点,可以同他较量一下。
公元200年正月,袁绍以曹操“败法乱纪”为名讨伐曹操,率兵直攻许昌。谋士田丰向袁绍建议:“现在许都已经不再空虚,怎么还能去袭击呢?曹操兵马虽然少,但是他善于用兵,变化多端,可不能小看他,我看还是作长期的打算吧。”田丰一再劝谏,袁绍不仅不听从,反认为田丰扰乱军心,把他投入监狱,随即向各州郡发出文书声讨曹操。袁绍征调了十万精兵,派沮授为监军,从邺城出发进兵黎阳。
袁绍遣大将颜良进攻白马,企图夺取黄河南岸要点,以保障主力渡河。曹操得知后,想亲自率兵前去解白马之围。谋士荀攸向曹操建议:“敌人兵多,我们人少,不能跟他们硬拼。不如分一部分人马往西在延津一带假装渡河,把袁军主力引到西边,然后派一支轻骑兵迅速赶往白马,打他们个措手不及。”曹操采纳了荀攸的建议,袁绍果然分兵赶往延津。曹操趁机率领轻骑,令张辽、关羽为前锋,急速赶往白马。关羽迅速迫近颜良军,冲进万军之中斩下颜良首级,然后一举击溃袁军,解了白马之围。
袁绍听到曹操救了白马,大怒。监军沮授劝袁绍把主力留在延津南面,分一部分兵力出击。但是袁绍怒火中烧,不听沮授劝告,下令全军渡河追击曹军,并派大将文丑率领数千骑兵打先锋。这时,曹操从白马向官渡撤退。听说袁军来追,就把六百名骑兵埋伏在延津南坡,叫兵士解下马鞍,让马在山坡下吃草,把武器盔甲丢得满地都是。
文丑的骑兵赶到南坡,看见这情景,认为曹军已经逃远,叫兵士收拾那些丢在地上的武器。突然曹操一声令下,伏兵一齐冲杀出来。袁军来不及抵抗,被杀得七零八落,文丑也糊里糊涂地丢了脑袋。
袁绍一连损失了颜良、文丑两员大将,但仍不肯罢休,一定要追击曹操。监军沮授说:“我们尽管人多,可不像曹军那么勇猛;曹军虽然勇猛,但是粮食没有我们多。所以我们还是坚守在这里,等曹军粮草耗尽,他们自然会退兵。”
袁绍又不听沮授劝告,命令将士继续进军,一直赶到官渡才扎下营寨。曹操的人马早已回到官渡,布好阵势,坚守营垒。
就这样,双方在官渡相持了一个多月。日子一久,曹军粮食越来越少,兵士疲劳不堪,曹操有点支持不住了。
这时,袁绍的军粮却从邺城源源不断地运来,袁绍派大将淳于琼带领一万人马运送军粮,并把大批军粮囤积在离官渡四十里的乌巢。
袁绍的谋士许攸探听到曹操缺粮的情报,向袁绍献计,劝袁绍派出一小队人马,绕过官渡,偷袭许都。袁绍冷冷地说:“不行,我要先打败曹操。”许攸还想劝谏,可正好有人从邺城送给袁绍一封信,说许攸家里的人犯法,已经被当地官员逮了起来。袁绍看了信,把许攸狠狠地责骂了一通。许攸又气又恨,想起曹操是他的老朋友,就连夜逃出袁营,投奔曹操去了。
曹操听说许攸来投奔他,高兴得来不及穿靴子,光着脚跑出来欢迎许攸,说:“好啊!您来了,我的大事就有希望了。”
许攸坐下来后说:“袁绍来势很猛,您打算怎么对付他?现在你们的粮食还有多少?”
曹操说:“还可以支持一年。”
许攸冷冷一笑,说:“没有那么多吧!”
曹操改口说:“嗯,只能支持半年。”
许攸生气地说:“您难道不想打败袁绍吗?为什么在老朋友面前还要说假话呢?”
曹操只好照实说:“军营里的粮食,只能维持一个月,您看怎么办?”
许攸说:“我知道您的情况很危急,特地来给您捎个信。现在袁绍有一万多车粮草、军械,全部放在乌巢。淳于琼的防备很松懈,您只要带一支轻骑兵去袭击,把他的粮草全部烧光,不出三天,他就不战自败了。”
曹操得到这个重要情报后,立刻把荀攸和曹洪找来,吩咐他们守好官渡大营,自己带领五千骑兵,连夜向乌巢进发。他们打着袁军的旗号,沿路遇到袁军的岗哨查问,都说是袁绍派去增援乌巢的。袁军的岗哨没有怀疑,就放他们过去了。
袁绍得知这一情况后,不派重兵增援,竟命令高览、张邰等大将领兵攻打曹营。张邰认为粮草重要,主张先救乌巢,但袁绍手下谋士郭图迎合袁绍意图,坚决主张攻打曹营。曹操得知袁军进攻大本营的消息,并不马上回救,奋力击溃乌巢袁军,将袁绍在乌巢积存的粮草全部烧毁。乌巢军粮被烧,淳于琼被杀,曹军大本营又攻不下,袁军上下人心惶惶。曹军趁机发动全面攻击,消灭了袁军主力七万多人,袁绍只带着八百骑兵仓皇北逃。
官渡之战,经过一年多的对峙,以曹操的全面胜利宣告结束,曹操以两万左右的兵力出奇制胜,击破袁军十万大军。两年之后,袁绍因兵败忧郁而死,曹操趁机彻底击灭袁氏集团,在统一北方的道路上迈出了重要的一步。