然而,他們很快就遇到了困難,黃沙漫漫,狂風四起,道路崎嶇難行,人馬疲憊不堪。曹操開始有了回軍的念頭,於是詢問郭嘉的意見。此時郭嘉因為水土不服而臥病在車上,他建議曹操輕兵兼道以出,掩其不備,但需要找到熟悉當地路徑的嚮導。曹操於是留下郭嘉在易州養病,自己則繼續前行,並找到了袁紹的舊將田疇作為嚮導。
田疇告訴曹操,這條道路在秋夏季節有水,淺的地方不能通車馬,深的地方又不能行船,非常難以行動。他建議曹操回軍,從盧龍口越過白檀之險,出空虛之地,前近柳城,掩其不備,可以一戰而擒獲烏桓的首領蹋頓。曹操聽從了田疇的建議,封他為靖北將軍,作為嚮導官,率領大軍前進。
當田疇引著張遼等人到達白狼山時,正好遇到了袁熙、袁尚會合蹋頓等數萬騎兵前來。張遼迅速向曹操報告了這個情況,曹操登高望去,發現蹋頓的軍隊沒有隊形,參差不整。他立刻意識到這是一個機會,於是命令張遼等人分四路下山,奮力急攻。蹋頓的軍隊大亂,張遼趁機拍馬斬殺了蹋頓於馬下,其餘的人也都投降了。袁熙、袁尚帶著數千騎兵逃往遼東去了。
曹操收軍進入柳城後,封賞了田疇等人,並準備回兵。然而此時天氣寒冷乾旱,二百里沒有水源,軍隊又缺乏糧食,只能殺馬為食,挖地三四十丈才得到水。在回到易州後,曹操重賞了先前曾經勸諫他的人,並告訴他們這次遠征雖然成功但是僥倖得來的勝利不能作為常法來遵循。同時他也感到非常傷心因為郭嘉已經去世了數日停柩在公廨裡。他去祭拜郭嘉時失聲痛哭表示失去了郭嘉就像失去了自己的左膀右臂一樣。回顧眾官他說:“諸君年齒皆孤等輩惟奉孝最少吾欲託以後事。不期中年夭折使吾心腸崩裂矣!”郭嘉的左右將郭嘉臨死時所寫的信呈給曹操看信中寫著:“丞相若從書中所言遼東事定矣。”曹操拆開信看後點頭嘆息眾人都不明白他的意思。
第二天夏侯惇引眾人來稟告說:“遼東太守公孫康久不賓服今袁熙、袁尚又往投之必為後患。不如乘其未動速往徵之遼東可得也。”然而曹操卻笑著說:“不煩諸公虎威。數日之後公孫康自送二袁之首至矣。”諸將都不相信他的話但事實證明曹操的預測是正確的。
袁熙和袁尚帶著數千騎兵逃往遼東。遼東太守公孫康是襄平人,武威將軍公孫度的兒子。當他得知袁熙和袁尚來投靠自己時,便召集本部屬官商議此事。公孫恭說:“袁紹在世時,常有吞併遼東的野心。現在袁熙和袁尚兵敗逃亡,無處棲身,來這裡投靠我們,就像鳩佔鵲巢一樣。如果我們收留他們,他們以後必定會反過來對付我們。不如把他們騙進城中殺掉,把首級獻給曹操,曹操必定會重重賞賜我們。”公孫康說:“只怕曹操會引兵攻打遼東,那樣的話,我們還不如接納袁熙和袁尚,讓他們幫助我們。”公孫恭說:“我們可以派人去打探訊息,如果曹兵來攻,我們就留下他們二人,如果曹兵不動,我們就殺掉他們二人,把首級送給曹操。”公孫康聽從了他的建議,派人去打探訊息。
袁熙和袁尚到達遼東後,兩人密謀說:“遼東有數萬軍隊,足以與曹操抗衡。我們現在暫時投靠他們,以後再找機會殺掉公孫康,奪取他的地盤,養精蓄銳,對抗中原,就可以收復河北了。”商議已定,他們便去見公孫康。公孫康把他們安排在館驛中住下,自己推說有病,不立即與他們相見。
不久,細作回報說:“曹操的大軍駐紮在易州,並沒有攻打遼東的意圖。”公孫康大喜,便先埋伏下刀斧手在壁衣中,然後請袁熙和袁尚進來。相見禮畢後,公孫康命他們坐下。當時天氣嚴寒,袁尚看到床榻上沒有褥子,就對公孫康說:“請鋪上坐席。”公孫康瞪大眼睛說:“你們兩個人的頭顱即將行走萬里路!還要什麼坐席!”袁尚大驚失色。公孫康大聲喝道:“左右的人為什麼