劉備離開曹操後,曹操出兵攻打劉備。劉備的弟弟關羽、張飛俘虜了曹軍將領王忠、劉岱。知道曹操是虛張聲勢,居然在黎陽駐軍,重點是河北。隨後,曹操收復了張繡、賈詡,限制了劉備、袁紹兩股勢力。許都內固的董叔接受帶旨,聯合眾人殺曹操。天安五年正月,董承刺殺曹操失敗,太醫姬平撞柱而死,曹竹殺了董珪妃,董承涉等人也被殺。次年,曹操平定西涼馬騰,並出兵攻打徐州。二月,親自率精銳部隊進攻劉備,迅速佔領沛縣,隨後進攻下邳,緊急登陸關羽。劉備全軍潰敗,劉備逃往河北投奔袁紹。天安五年二月,進軍黎陽,企圖渡江,與曹軍主力決戰。首先,他派顏良攻擊白馬,確保主力渡河。當時荀攸的謀士認為袁紹兵多,建議西攻,散兵。當然,袁紹分兵進入延津。關羽殺顏良並斬首,袁軍大敗。袁紹派文丑、劉備帶兵追擊曹軍。曹操命士兵們下馬放馬,將輜重丟在路上。袁軍中計,曹軍進攻,關羽殺文丑。顏良、文丑戰死,袁紹精神崩潰。當時劉備知道關羽與袁紹在一起,就讓孫干將信交給關羽。關羽孤身千里迢迢送別二妻千里尋兄弟。終於,兄弟倆相約古城,繼續桃園正義。在此期間,孫策打敗劉詢勢頭強勁。孫策殺了吳郡太守徐恭,徐恭的弟子在他的獵房裡殺了孫策,孫策受傷中毒。又因為他繼承了父親的遺志,要實現江東大業,再加上當時虞姬道人這樣的事件,他想得太多了。他得病去世,年僅二十六歲。建安五年八月,元軍主力逼近官渡,營寨東西寬約數十里,曹操與元軍交戰。九月,袁紹築塔蓋棺,堆地如山,箭射曹營。曹軍製造閃電戰車,用石塊摧毀了元軍建造的樓台和船槳。雙方堅持了三個月。曹操食不果腹,疲憊不堪。在荀彧的鼓勵下,曹操決心繼續站穩腳跟。十月,袁紹命淳于瓊護送糧草,貯於袁軍營北烏巢。千鈞一發之際,許攸投奔曹操,建議曹操輕兵奇襲烏巢,燒毀他的財物。袁紹得知曹操攻打烏巢的消息,派輕騎前去救援,並命張郃、高覽率重兵攻擊曹軍。後來,張郃、高覽投降曹操,導致軍心大跌,軍心大潰。袁紹帶著八百騎兵回到河北。官渡之戰後,曹操為打敗袁紹,統一北方奠定了堅實的基礎。