建安七年(202)正月,曹操率軍北回,經過故鄉譙縣,祭祀了故太尉喬玄。然後,兵進官渡,謀攻冀州。
五月,袁紹吐血而亡。留下幾個兒子哪是曹操的對手。
逢紀、審配立袁尚為冀州牧。袁譚大怒,自稱車騎將軍,率兵屯黎陽,向弟弟索要兵馬抵抗曹軍。袁尚讓逢紀帶了些老弱殘兵來見袁譚,被袁譚誅殺。九月,曹軍攻打袁譚,袁尚終於顧手足,自率兵馬營救兄長,曹軍大勝,二袁退而固守。
建安八年(203)二月,曹操攻打黎陽,二袁敗還鄴城。曹操命兵士盡割鄴城郊外的麥子。這時,郭嘉反勸曹操退兵,原因是二袁本有矛盾,攻則齊心對外,緩則分裂相爭,不如麾軍南向劉表,以觀其變。
五月,曹操回師許都,兵進汝南西平攻擊劉表。果然,袁氏兄弟發生內訌,袁譚敗出鄴城,引兵北屯南皮。八月,袁尚大破袁譚,袁譚東奔平原,固城堅守,並派辛評之弟辛毗向曹操求援。
辛毗到達西平傳達了袁譚的意思,諸將都勸曹操不要以二袁為意,先攻劉表。可苟攸又堅持必須乘亂奪取冀州,作為北方的根據地。次日,辛毗見曹操沒有北向之意,便去找郭嘉。郭嘉帶他去見曹操,曹操問:“袁譚的話一定可信?袁尚一定可破?”辛毗回道:“明公不要問可信與否,隻須看一看形勢。你現在去攻打鄴城,袁尚如不還救,就不能自守。如還,即使袁譚又隨後襲擊,以明公之威,擊此疲憊之敵,易如反掌。”
十月,曹軍到達黎陽,袁尚聞訊回軍鄴城。部將呂曠、高翔叛歸曹操。袁譚聞知,暗中派人送印綬給二將。曹操得知,便與袁譚結了親家,暫且穩住他。
建安九年(204)正月,曹操回渡黃河,引淇水入白溝,開出了一條運糧的水路,打算攻擊鄴城。
二月,袁尚留審配、蘇由守鄴城,自率兵馬又去平原打他大哥。曹操聞知,兵進洹水。蘇由暗結曹軍準備內應,可密謀泄露,蘇由出逃曹營。曹軍抵達鄴城,築土山,挖地道,展開了總攻。四月,曹操留曹洪指揮攻城,自率兵馬襲擊袁軍毛城守將尹楷,斷了鄴城的糧道。河北諸郡紛紛投降,黑山黃巾統帥張燕遣使請求援助曹軍,曹操拜他為平北將軍。