並州既定,操商議西擊烏桓。曹洪等曰:“袁熙、袁尚兵敗將亡,勢窮力盡,遠投沙漠;我今引兵西擊,倘劉備、劉表乘虛襲許都,我救應不及,為禍不淺矣:請回師勿進為上。”郭嘉曰:“諸公所言錯矣。主公雖威震天下,沙漠之人恃其邊遠,必不設備;乘其無備,卒然擊之,必可破也。且袁紹與烏桓有恩,而尚與熙兄弟猶存,不可不除。劉表坐談之客耳,自知才不足以禦劉備,重任之則恐不能製,輕任之則備不為用。雖虛國遠征,公無憂也。”操曰:“奉孝之言極是。”遂率大小三軍,車數千輛,望前進發。但見黃沙漠漠,狂風四起;道路崎嶇,人馬難行。操有回軍之心,問於郭嘉。嘉此時不伏水土,臥病車上。操泣曰:“因我欲平沙漠,使公遠涉艱辛,以至染病,吾心何安!”嘉曰:“某感丞相大恩,雖死不能報萬一。”操曰:“吾見北地崎嶇,意欲回軍,若何?”嘉曰:“兵貴神速。今千裏襲人,輜重多而難以趨利,不如輕兵兼道以出,掩其不備。但須得識徑路者為引導耳。”
遂留郭嘉於易州養病,求向導官以引路。人薦袁紹舊將田疇深知此境,操召而問之。疇曰:“此道秋夏間有水,淺不通車馬,深不載舟楫,最難行動。不如回軍,從盧龍口越白檀之險,出空虛之地,前近柳城,掩其不備:蹋頓可一戰而擒也。”操從其言,封田疇為靖北將軍,作向導官,為前驅;張遼為次;操自押後:倍道輕騎而進。
田疇引張遼前至白狼山,正遇袁熙、袁尚會合蹋頓等數萬騎前來。張遼飛報曹操。操自勒馬登高望之,見蹋頓兵無隊伍,參差不整。操謂張遼曰:“敵兵不整,便可擊之。”乃以麾授遼。遼引許褚、於禁、徐晃分四路下山,奮力急攻,蹋頓大亂。遼拍馬斬蹋頓於馬下,餘眾皆降。袁熙、袁尚引數千騎投遼東去了。
操收軍入柳城,封田疇為柳亭侯,以守柳城。疇涕泣曰:“某負義逃竄之人耳,蒙厚恩全活,為幸多矣;豈可賣盧龍之寨以邀賞祿哉!死不敢受侯爵。”操義之,乃拜疇為議郎。操撫慰單於人等,收得駿馬萬匹,即日回兵。時天氣寒且旱,二百裏無水,軍又乏糧,殺馬為食,鑿地三四十丈,方得水。操回至易州,重賞先曾諫者;因謂眾將曰:“孤前者乘危遠征,僥幸成功。雖得勝,天所佑也,不可以為法。諸君之諫,乃萬安之計,是以相賞。後勿難言。”
操到易州時,郭嘉已死數日,停柩在公廨。操往祭之,大哭曰:“奉孝死,乃天喪吾也!”回顧眾官曰:“諸君年齒,皆孤等輩,惟奉孝最少,吾欲托以後事。不期中年夭折,使吾心腸崩裂矣!”嘉之左右,將嘉臨死所封之書呈上曰:“郭公臨亡,親筆書此,囑曰:丞相若從書中所言,遼東事定矣。”操拆書視之,點頭嗟歎。諸人皆不知其意。次日,夏侯惇引眾人稟曰:“遼東太守公孫康,久不賓服。今袁熙、袁尚又往投之,必為後患。不如乘其未動,速往征之,遼東可得也。”操笑曰:“不煩諸公虎威。數日之後,公孫康自送二袁之首至矣。”諸將皆不肯信。