袁、曹相持數月,雙方軍糧將盡,但袁軍的補給軍糧不斷運來。戰事曠日持久,對曹軍顯然不利,利在早日決戰,速戰速決。而銷毀袁軍軍糧,破壞阻撓其運糧,對奪取最後勝利至關重要。荀攸根據可靠情報,向曹操建議說:“袁紹的運糧車即日可到,護糧將領韓猛恃勇輕敵,派將突襲,定可取勝。”曹操問:“可派誰前往?”荀攸胸有成竹地推薦:“徐晃可當此任。”曹操乃派徐晃和史渙率軍截擊,大破韓猛,將其輜重數千車燒掉。十月,袁紹謀士許攸來降,密報曹操說,袁紹派淳於瓊等率軍萬餘,迎護運糧車,屯於烏巢(官渡東北約四十裏外)。建議乘其將驕兵惰,前往偷襲,定可成功。此計如同釜底抽薪,能從根本上削弱袁紹,動搖其軍心。但是眾人皆疑,不敢輕信,唯有荀攸和賈詡力勸曹操采納許攸的建議。曹操同意,遂留荀攸和曹洪守衛官渡大營,自率精騎五千,連夜前往烏巢,大破袁軍,陣斬淳於瓊。被袁紹派去進攻曹洪的張郃、高覽得知淳於瓊兵敗,遂向曹軍投降,但曹洪疑其有詐,不敢受降。荀攸說:“張郃受袁紹猜忌,計謀不被采用,憤而來降,此有何疑?”原來,荀攸對袁紹主要將領、謀臣的情況,了解得清清楚楚,對袁氏集團的內部矛盾了如指掌,故而能準確地判斷張郃、高覽投降是真,並非行詐。曹洪這才放心受降。袁紹見大勢已去,遂棄軍逃走。從此一蹶不振,實力漸衰,憂懼成疾,發病嘔血,於建安七年(公元202年)五月死去。
乘亂平兩袁
袁紹死後,小兒子袁尚繼承了父位。而長子袁譚,自號車騎將軍,屯黎陽(故治在今河南省浚縣東北)。
建安八年(公元203年)三月,曹軍猛攻黎陽城,兩袁被迫出戰,被打得大敗,隻得連夜逃走。四月,曹操追至鄴城下,因城堅難攻,遂於五月還許,留賈信屯守黎陽。八月,曹操以“欲擒故縱”之計,放棄兩袁不攻,而做出遠征劉表的姿態,軍於西平。袁氏兩兄弟在曹操大軍壓境的危機之時,尚能暫彌裂痕,合力抗曹,一旦曹軍離鄴城南下,內訌即起,爭奪冀州,相互攻擊。袁譚失敗,退保平原,袁尚猛攻不輟。袁譚危在旦夕,隻得派遣辛毗向曹操乞降求援。曹操征求大家的意見,左右都以為劉表勢力強盛,宜先平定。袁譚、袁尚敗軍之餘,不足為憂。荀攸卻認為:“天下正是多事之秋,群雄逐鹿,較智量力。而劉表坐保長江、漢水之間,無所事事。其無四方之誌,顯而易見。袁氏據四州之地,帶甲之士十萬。袁紹經營多年,其勢盤根錯節,如果他的兩個兒子能和睦相處,守其成業,那麼天下之難,一時難以平息。如果並為而一,專力對外,也是難以對付的。現兄弟遘惡,勢不相立,正是天賜良機,正應乘其內亂,迅速平定兩袁,統一天下,就穩操勝券了。機遇難得,不可失也。”荀攸依據對各派軍事勢力集團的曆史和現狀的分析,確立了平定兩袁先於平定劉表、重於平定劉表的戰略思想,同時又提出了把握時機、利用其內亂的戰術思想,這是十分高明的謀略。曹操聽了他的精妙分析,連連稱“善!”並說:劉表是“自守之賊也,宜為後圖。譚、尚狡猾,當乘其亂”。表明了先平兩袁、後圖劉表的用兵順序及平兩袁時乘亂用兵的戰術指導思想。這是對荀攸平兩袁的謀略思想的肯定和讚同。
促使、擴大和利用敵人的內亂以取勝,是曆代軍事謀略家十分重視的謀略思想。孫子就曾說過“亂而取之”。荀攸熟諳兵法,又知己知彼,深知及時對河北用兵,是乘亂取勝的極好時機。曹操“心有靈犀一點通”,立即領悟了其中的奧妙。於是計議遂定,馬上答應袁譚的請求,立即率軍還擊袁尚。曹操為了籠絡袁譚,還與他結為兒女親家。袁尚得知曹軍北來,慌忙放棄對平原的包圍,撤軍還鄴。建安九年(公元204年)二月,袁尚留審配等守鄴城,自率軍攻袁譚。曹操率大軍至,圍攻鄴城。五月,決漳水灌鄴,城中被淹乏糧,餓死者過半。七月,袁尚還救鄴城被曹軍擊敗,逃向中山。八月,曹軍破鄴城,審配被殺。袁譚受援脫險後,乘機略取地盤,擊走袁尚,並其兵眾。曹操責其負約,與之絕婚,率軍來攻。袁譚棄平原,逃征南皮。建安十年(公元205年)正月,曹軍攻南皮,從早晨至日中,連攻不克。曹操“乃自執桴鼓,士卒鹹奮,應時破陷”。城破之後,袁譚被俘斬首,冀州平定。袁尚等無處安身,隻得投降三郡烏丸。建安十二年(公元207年),曹操一鼓作氣,遠征三郡烏丸。袁尚等又逃奔遼東。九月,曹操自柳城凱旋而歸。遼東太守公孫康,斬送袁尚等人首級。至此,河北袁氏勢力被徹底掃除,荀攸乘亂平二袁的謀略完全實現。