一、肃清袁氏残余
官渡一战,曹操击溃了他在北方最大的敌人袁绍,长江以北由他来统一已是大势所趋。建安七年,即公元202年,逃回到黄河以北冀州老巢的袁绍病死。由于袁绍死前没有立下继承人,而逢纪、审配两人又因与袁绍长子袁谭不和,所以反对立袁谭继位,于是假造了一份袁绍的诏书,说袁绍遗命,令三子袁尚为继承人。袁谭当然不服,从此,袁家兄弟内部开始了自相残杀。
袁绍的两个儿子袁谭、袁尚发生争斗,但袁谭势力不及袁尚,于是就向曹操乞降。建安九年二月,已从官渡之战中恢复过来的曹操趁袁尚出兵攻击袁谭的时候,突然出兵对袁尚的大本营邺城展开围攻。袁尚听到消息后,不得已率军回救,在滏水旁为营,这时曹操已进军到此,顿时把他的营寨包围起来。袁尚看到后很是害怕,于是请求投降,曹操不答应。于是袁尚趁着黑夜慌忙逃奔到中山(今河北定州),袁军也随之溃散。然后,曹操命人拿着缴获袁尚的印绶节钺招降邺城守军,城中守军也斗志崩溃,邺城就这样被曹操攻破了。第二年正月,曹操又以袁谭负约为借口,派兵攻灭袁谭,冀州就这样平定了。袁尚兵败后,逃奔幽州刺史袁熙。曹操又派兵攻打袁熙,袁熙抵抗不住,于是两人就逃奔到了三郡乌桓。
建安十二年,曹操为了彻底肃清袁氏残余势力,也为了解决三郡乌桓入塞内为害的问题,决定亲自率军远征乌桓。在当时的汉末,辽西、辽东、右北平三郡乌桓结合,这便是三郡乌桓,首领是辽西部的蹋顿。三郡乌桓与袁氏关系一直都很好,并且屡次侵扰边境,掳掠人口和财物。同年五月,曹操率大军到达无终(今天津蓟州)。当时正好碰上雨季,道路上满是积水,据说是“浅不通车马,深不载舟船”。曹操听从无终人田畴的建议,改从一条很久没人走,但还是有痕迹显示可以通行的小路进军。在田畴的引导下,曹操大军先爬上徐无山(今河北玉田北),出卢龙要塞(今河北喜峰口附近一带),中间爬山越谷近五百多里,最后直指乌桓的老巢柳城(今辽宁朝阳南)。而当曹军行至离柳城不足二百里时,才被敌军发现,于是蹋顿与袁尚、袁熙等人率数万骑兵迎击。八月,二军相遇,当时曹军的辎重还在后面,穿装甲的人不是很多,而敌军的军势却很盛。这时曹操登高瞭望,看见敌军虽然很多,但阵势不整,一看就不曾受过正规的军事训练。于是命令大将张辽为前锋,乘敌阵稍动之机,向敌军发起猛攻。乌桓军顿时大乱,首领蹋顿也被曹军所斩杀,曹军大获全胜,仅胡、汉降者就有二十余万人,袁尚等人又逃奔到割据平州的公孙康。这时,有人就劝曹操乘形势大好进攻公孙康,但曹操却说:“我根本不用出兵,就能让公孙康给我送袁尚等人的人头来。”于是率军班师还朝。果然不久之后,公孙康斩杀袁尚、袁熙,并将他们的首级献与曹操。众位将领都不明白这是为什么,曹操就说道:“公孙康平时就很畏惧袁尚等人,如果我很快去进攻公孙康,他们就会齐心合力地来阻挡我。但如果我现在不去进攻,由于他们没有外患,内部的矛盾就会出现。公孙康疑惧袁尚等会夺他的位置,最终他们就会自相残杀,所以不用我们动手,袁尚、袁熙自会被人所杀。”就这样,曹操攻破了三郡乌桓,彻底肃清了袁氏的残余势力。