袁尚逃奔中山(今河北定縣)。曹操命人拿著繳獲袁尚的印綬節鉞招降鄴城守軍,城中鬥志崩潰。鄴城遂被曹操攻破。
從這一年起,曹操把自己的據點北遷到了冀州鄴城,政令軍隊此後皆從此出,而漢獻帝的都城許縣則只留些許官吏。
西元205年(建安十年)正月,曹操又以負約為名,攻滅袁譚,冀、青二州平定。
於是,曹操上表讓還兗州牧,改任冀州牧。袁尚兵敗後,逃奔幽州刺史袁熙。不久,袁尚、袁熙又逃奔三郡烏桓。
西元206年(建安十一年),曹操攻滅高幹,平定幷州。
西元207年(建安十二年),曹操為了肅清袁氏殘餘勢力,也為了徹底解決三郡烏桓入塞為害問題,決定遠征烏桓。
漢末,遼西、遼東、右北平三郡烏桓結合,是為三郡烏桓,其首領為遼西部的蹋頓。
三郡烏桓與袁氏關係一直很好,並屢次侵擾邊境,擄掠人口財物。
這年五月,曹操親率大軍到達無終(今薊縣)。
時正雨季,道路積水,「淺不通車馬,深不載舟船」。曹操從無終人田疇之議,改從一條久已斷絕,但「尚有微徑可尋」的路線進軍。
在田疇的引導下,曹操大軍登徐無山(今河北玉田北),出盧龍塞(今河北喜峰口附近),「塹山堙谷五百餘里」,直指烏桓老巢柳城(今遼寧朝陽南)。
八月,曹軍進至離柳城不足二百里時,烏桓才發現,於是蹋頓與袁尚、袁熙等人率數萬騎兵迎擊。
二軍相遇,時曹軍輜重在後,「被甲者少,」而烏桓軍軍勢甚盛。
曹操登高瞭望,見烏桓軍雖多,但陣勢不整,遂命大將張遼為前鋒,乘烏桓軍陣稍動之機,向烏桓軍發動猛攻。
烏桓軍大亂,曹軍陣斬蹋頓,大獲全勝,胡、漢降者二十餘萬,袁尚等人逃奔割據平州的公孫康。
這時,有人勸曹操乘勢進擊公孫康,曹操說:「吾方使康斬送尚、熙首,不煩兵也。」
遂率軍還師。不久,公孫康果然斬殺袁尚、袁熙,並將其首級獻與曹操。
諸將不明所以,曹操說:「彼素畏尚等,吾急之則併力,緩之則自相圖,其勢然也。」於是,曹操攻破三郡烏桓,也徹底肅清了袁氏勢力。
十一月至易水,代郡烏丸行單于普富盧、上郡烏丸行單于那樓將其名王來賀。
同年郭嘉因水土不服、氣候惡劣、日夜急行操勞過度,在曹操北歸前病逝。
歸程途中,據《曹瞞傳》記載:「時寒且旱,二百里無覆水,軍又乏食,殺馬數千匹以為糧,鑿地入三十餘丈乃得水。
既還,科問前諫者,眾莫知其故,人人皆懼。公皆厚賞之,曰:‘孤前行,乘危以徼倖,雖得之,天所佐也,故不可以為常。諸君之諫,萬安之計,是以相賞,後勿難言之。’」
西元208年(建安十三年),開闢玄武池訓練水軍。六月,曹操廢三公,恢復丞相制度,並自任漢朝丞相。基本平定北方後,兵鋒轉而南向。
七月,進軍南征荊州劉表。八月,劉表病死,其子劉琮接任荊州牧。
九月,曹操大軍進至新野(今屬河南),劉琮以為無法抵擋,舉荊州之眾投降曹操。
這時,官渡之戰後投奔劉表的劉備屯駐於樊城(今湖北襄樊),聽說劉琮投降,便率軍向江陵(今屬湖北)撤退。
江陵為荊州重鎮,存有大量軍用物資。
曹操聽說,怕江陵落入劉備之手,遂親率五千騎兵從襄陽(今湖北襄樊)疾馳三百里,在當陽長坂(今湖北當陽東北)將劉備追上,大破其軍,隨後進佔江陵。