五月,曹操引军退还,留贾信守黎阳。
不久后,曹操引兵向南,征讨刘表,袁谭、袁尚反目成仇,互相攻击。
袁谭不敌袁尚,败走平原,遣辛毗向曹操乞降求救。
当时,诸将都怀疑有诈,只有荀攸劝曹操答应袁谭。
曹操说:“我攻打吕布之时,刘表没有侵犯我方;官渡之战时,他又不肯帮助袁绍。这只是个自守的贼子,应该等到以后再来对付他。而袁谭、袁尚狡猾,我正应该趁北方混乱时发动攻击。就算袁谭挟诈,不肯真心屈服我军,但我击破袁尚,夺取他的地盘,对我军也更加有利。”
于是,再次北上,袁尚闻讯也退回邺城。
当时,袁尚部将吕旷、吕翔背叛袁尚,率众投降曹操,曹操封两人为列侯。
袁谭私自刻将军印绶,交给吕旷两人,吕旷把将军印送给曹操。
曹操说:“我自然知道袁谭会耍些小聪明。他想让我攻击袁尚,然后趁机略民聚众,自以为破袁尚后,实力足以自强,可趁我军疲敝来与我抗衡。但击破袁尚后,我的势力更加强盛,哪可能会疲敝,让他有机可乘呢?”
曹操为了让袁谭暂时安心,还和袁谭结亲,让自己的儿子曹整娶袁谭的女儿。
建安九年(204年)正月,曹操率兵渡过黄河,截断淇水,引入白沟,作为运粮的通道。
二月,袁尚再次出兵攻打袁谭,曹操趁机进军邺城。
当时,苏由、审配镇守邺城,曹操进军到洹水时,苏由投降。
曹操到达邺城外,做土山、地道。
当时,武安长尹楷屯毛城,通上党粮道。
四月,曹操留曹洪攻打邺城,亲自击破尹楷,又击破邯郸的沮鹄,易阳令韩范、涉长梁岐皆举县投降。
五月,曹操毁土山、地道,作围堑,决漳水灌城,城中饿死者过半。
七月,袁尚率军回救,依滏水为营,曹操进军将其营寨包围。
袁尚害怕,请求投降,曹操不许。
袁尚乘夜逃跑,袁军溃散,袁尚逃奔中山。
曹操命人拿着缴获袁尚的印绶节钺招降邺城守军,城中斗志崩溃。
八月,审配的侄子审荣打开东城门,曹操军一举攻破邺城,擒杀审配。
之后,曹操哭祭袁绍墓,慰劳袁绍妻子,将袁绍的家人和宝物都还给了袁家,并赐给他们杂缯絮,供养他们家。
从这一年起,曹操把自己的据点北迁到了冀州的邺城,政令军队此后皆从此出,而许县则只留些许官吏。
九月,曹操下令:“河北遭受袁氏之难,不用再上缴今年租赋!”
又严厉打压豪强兼并,百姓喜悦。
曹操领冀州牧,并上表让还兖州牧。
当初,曹操围攻邺城时,袁谭趁机攻取甘陵、安平、勃海、河间,又击破故安的袁尚败军,兼并其众。
曹操写信给袁谭,责备他负约,与他断绝婚姻,将他的女儿送回,然后进兵。
十二月,曹操进入平原,略定诸县。
建安十年(205年)正月,曹操攻灭袁谭,冀、青二州平定。
当初,袁尚兵败后,投奔幽州刺史袁熙。
此月,幽州大将焦触、张南起兵反袁氏,袁尚、袁熙又逃奔三郡乌桓。
焦触自称幽州刺史,举郡县归附曹操。
四月,黑山军首领张燕率领其部众十余万人投降曹操。
故安人赵犊、霍奴起兵,杀死幽州刺史,三郡乌桓又围攻鲜于辅于犷平。
八月,曹操率兵北征,斩杀赵犊,又渡河救援犷平,乌桓奔走出塞。
当初,袁绍令其外甥高干领并州。
曹操攻破邺城后,高干投降了曹操,仍然被任命为并州刺史。
而曹操讨伐乌丸之时,高干举州反曹操,捉拿上党太守,举兵守壶口关。
曹操遣乐进、李典讨伐高干,高干退守壶关城。
建安十一年(206年)正月,曹操攻打高干。
高干留别将守城,自己逃入匈奴,向单于求救,单于不从。
曹操围壶关前后三月,最终城陷。
高干逃向荆州,在途中被上洛都尉王琰捕杀。
又东征淳于,遣乐进、李典击破海贼管承。
建安十二年(207年),曹操回到邺城,大封功臣二十多人,皆为列侯,其余依次受封。
曹操为了肃清袁氏残余势力,也为了彻底解决三郡乌桓入塞为害问题,决定远征乌桓。
汉末,辽西、辽东、右北平三郡乌桓结合,是为三郡乌桓,其首领为辽西部的蹋顿。
三郡乌桓与袁氏关系一直很好,并屡次侵扰边境,掳掠人口财物。
五月,曹操亲率大军到达无终。
时正雨季,道路积水,“浅不通车马,深不载舟船”。
曹操从无终人田畴之议,改从一条久已断绝,但“尚有微径可寻”的路线进军。
在田畴的引导下,曹操大军登徐无山,出卢龙塞,“堑山堙谷五百余里”,直指乌桓老巢柳城。
八月,曹军进至离柳城不足二百里时,乌桓才发现。
于是,蹋顿与袁尚、袁熙等人率数万骑兵迎击。
二军相遇,时乌桓军军势甚盛,而曹军则是“车重在后,被甲者少,左右皆惧”,唯独张辽力劝曹操迎战。
曹操登高了望,见乌桓军虽多,但阵势尚未摆好,遂命将自己的持麾授予张辽暂用。
张辽指挥先锋部队,乘乌桓军阵稍动之机,向乌桓军发动猛攻。
乌桓军大败,死者被野,乌桓单于蹋顿也被临阵斩杀。
曹军在白狼山之战中大获全胜,胡、汉降者二十余万,袁尚等人逃奔割据平州的公孙康。
这时,有人劝曹操乘势进击公孙康。
曹操说:“吾方使康斩送尚、熙首,不烦兵也。”
于是,率军还师。
不久,公孙康果然斩杀袁尚、袁熙,并将其首级献与曹操。
诸将不明所以,曹操说:“彼素畏尚等,吾急之则并力,缓之则自相图,其势然也。”
于是,曹操攻破三郡乌桓,也彻底肃清了袁氏势力。
十一月,曹操行至易水,代郡乌丸行单于普富卢、上郡乌丸行单于那楼率其部下名王来贺。