中國東漢末年官渡之戰後,袁紹病亡,其子袁尚、袁熙投奔居今冀東、遼寧一帶的烏桓族,以圖再起。曹操為消滅袁氏殘餘勢力,鞏固北方,於建安十一年(206)開鑿溝通呼沱河、鮑丘水的平虜、泉州二渠(今天津市南北),以輸送軍需。次年夏,曹操統軍出無終(今天津薊縣),東攻烏桓。時雨澇道路阻塞,烏桓軍扼守要道,曹軍受阻。曹操採納當地名士田疇出偏僻小道以攻其不備的建議,乃回師,詐稱待秋冬進軍。烏桓軍因此戒備鬆弛。曹操以田疇率部曲為嚮導,上徐無山(今河北遵化東),輕騎出盧龍塞((今河北喜峰口一帶),於崇山峻嶺中疾行數百裡。八月,進至距柳城(今遼寧朝陽附近)約200裡處,烏桓單於蹋頓等倉皇調集數萬騎迎擊。兩軍於白狼山(今遼寧喀喇沁左旗境)遭遇。曹操登高審勢,見烏桓軍陣列不整,遂以帥旗授張遼,令其統軍急襲。烏桓軍猝遭打擊,頓時大亂,蹋頓被斬,全軍崩潰。曹操乘勝攻占柳城後還師,並遷烏桓及漢民眾20餘萬入塞。袁氏兄弟率數千騎投奔遼東太守公孫康。公孫康為結好曹操,斬袁氏兄弟。曹操攻烏桓的勝利,為爾後南攻西征解除瞭後顧之憂。