建安五年(200年),曹操与袁绍对战于官渡。相持一段时间后,曹操粮草短缺,内外交困,不能坚持,打算退守许都。荀彧写信劝勉他说:“军粮虽少,却也比不上高祖皇帝当年的艰辛:他与项羽相持于荥阳、成皋之间,谁都不肯先退,先退的一方必定被动挨打。现在,您已经与袁绍相持了半年,早已挫败了他的锐气,后面的局势必然会发生改变,出奇制胜的机会就要到来,不可轻易放弃!”曹操听从了荀彧的建议,沉下心来,继续坚守。
在此之前,荀彧曾经说过:“袁绍虽然人多势众,却没有严明的制度。他手下的四个谋士,田丰失之于刚直,许攸失之于贪鄙,审配失之于自命清高,逢纪失之于刚愎自用。尤其是许攸,若是他的家人犯法,就一定不能让他逃跑;只要他逃跑,就一定会叛变。”后来,许攸的家人果然犯了法,被审配拘捕在监狱里。许攸一怒之下,果然背叛了袁绍,跑来向曹操出卖袁绍屯粮乌巢的军机。
曹操从许攸处洞察袁绍的军机后,果断领军奇袭乌巢,一把大火,把袁军的粮仓烧成灰烬。袁绍全军顿时大乱。曹操趁势掩杀,歼灭袁军七万多人。袁绍仅仅带着八百亲兵逃回黄河北岸,从此一蹶不振。
到了建安八年(203年),曹操上奏汉献帝,要求封荀彧为侯爵。荀彧看到奏章,觉得自己没有战功,不够资格受封,就把奏章压下,没有上报给汉献帝。曹操对他说:“与你共事以来,都是你在帮助我。为什么非要在战场上杀敌才算立功呢?你已经做得很多了,希望你不要推让!”荀彧这才同意受封为万岁亭侯。曹操很高兴,又把女儿安阳公主许给荀彧的长子荀恽为妻。