袁尚害怕,请求投降,曹操不许。袁尚乘夜逃跑,袁军溃散。
袁尚逃奔中山(今河北定县)。曹操命人拿着缴获袁尚的印绶节钺招降邺城守军,城中斗志崩溃。邺城遂被曹操攻破。
从这一年起,曹操把自己的据点北迁到了冀州邺城,政令军队此后皆从此出,而汉献帝的都城许县则只留些许官吏。
公元205年(建安十年)正月,曹操又以负约为名,攻灭袁谭,冀、青二州平定。
于是,曹操上表让还兖州牧,改任冀州牧。袁尚兵败后,逃奔幽州刺史袁熙。不久,袁尚、袁熙又逃奔三郡乌桓。
公元206年(建安十一年),曹操攻灭高干,平定并州。
公元207年(建安十二年),曹操为了肃清袁氏残余势力,也为了彻底解决三郡乌桓入塞为害问题,决定远征乌桓。
汉末,辽西、辽东、右北平三郡乌桓结合,是为三郡乌桓,其首领为辽西部的蹋顿。
三郡乌桓与袁氏关系一直很好,并屡次侵扰边境,掳掠人口财物。
这年五月,曹操亲率大军到达无终(今蓟县)。
时正雨季,道路积水,“浅不通车马,深不载舟船”。曹操从无终人田畴之议,改从一条久已断绝,但“尚有微径可寻”的路线进军。
在田畴的引导下,曹操大军登徐无山(今河北玉田北),出卢龙塞(今河北喜峰口附近),“堑山堙谷五百余里”,直指乌桓老巢柳城(今辽宁朝阳南)。
八月,曹军进至离柳城不足二百里时,乌桓才发现,于是蹋顿与袁尚、袁熙等人率数万骑兵迎击。
二军相遇,时曹军辎重在后,“被甲者少,”而乌桓军军势甚盛。
曹操登高瞭望,见乌桓军虽多,但阵势不整,遂命大将张辽为前锋,乘乌桓军阵稍动之机,向乌桓军发动猛攻。
乌桓军大乱,曹军阵斩蹋顿,大获全胜,胡、汉降者二十余万,袁尚等人逃奔割据平州的公孙康。
这时,有人劝曹操乘势进击公孙康,曹操说:“吾方使康斩送尚、熙首,不烦兵也。”
遂率军还师。不久,公孙康果然斩杀袁尚、袁熙,并将其首级献与曹操。
诸将不明所以,曹操说:“彼素畏尚等,吾急之则并力,缓之则自相图,其势然也。”于是,曹操攻破三郡乌桓,也彻底肃清了袁氏势力。
十一月至易水,代郡乌丸行单于普富卢、上郡乌丸行单于那楼将其名王来贺。
同年郭嘉因水土不服、气候恶劣、日夜急行操劳过度,在曹操北归前病逝。
归程途中,据《曹瞒传》记载:“时寒且旱,二百里无复水,军又乏食,杀马数千匹以为粮,凿地入三十馀丈乃得水。
既还,科问前谏者,众莫知其故,人人皆惧。公皆厚赏之,曰:‘孤前行,乘危以徼幸,虽得之,天所佐也,故不可以为常。诸君之谏,万安之计,是以相赏,后勿难言之。’”
公元208年(建安十三年),开辟玄武池训练水军。六月,曹操废三公,恢复丞相制度,并自任汉朝丞相。基本平定北方后,兵锋转而南向。
七月,进军南征荆州刘表。八月,刘表病死,其子刘琮接任荆州牧。
九月,曹操大军进至新野(今属河南),刘琮以为无法抵挡,举荆州之众投降曹操。
这时,官渡之战后投奔刘表的刘备屯驻于樊城(今湖北襄樊),听说刘琮投降,便率军向江陵(今属湖北)撤退。
江陵为荆州重镇,存有大量军用物资。
曹操听说,怕江陵落入刘备之手,遂亲率五千骑兵从襄阳(今湖北襄樊)疾驰三百里,在当阳长坂(今湖北当阳东北)将刘备追上,大破其军,随后进占江陵。