曹操從舞陰回來,南陽、章陵各縣又反叛而歸附張繡,曹操派曹洪攻打他們,失利,退守葉縣,不斷地被張繡、劉表所侵擾。冬季十一月,曹操親自往南征討,到達宛城。劉表部將鄧濟據守湖陽。曹操攻占了湖陽,活捉了鄧濟,湖陽投降。攻打舞陰,也把它攻下了。

三年春季正月,曹操回到許都,開始設置軍師祭酒的官職。三月,曹操在穰縣圍攻張繡。夏季五月,劉表派兵救援張繡,切斷曹軍的後路。曹操率領軍隊往回撤退,張繡的軍隊前來追趕,曹操的軍隊不能前進,就連接軍營逐漸向前推進。曹操寫給荀彧的信說:“敵人前來追趕我,即使一天走幾裏地,我估計到達安眾,必定打敗張繡了。”到達安眾,張繡和劉表的軍隊聯合把守險要地區,曹操的軍隊前後受到敵人的攻擊。曹操於是乘夜在險要地區開鑿地道,全部運走了軍用物資,設置奇兵。正好天亮,敵人以為曹操偷偷逃跑了,全軍前來追趕。曹操於是出動奇兵,步兵和騎兵夾擊,大敗敵軍。秋季七月,曹操回到許都,苟彧問曹操:“先前預料敵人必定失敗,根據什麼呢?”曹操說:“敵人阻截我回軍,而跟被置於死地的我軍交戰,我因此知道將士奮死殺敵必定能夠取勝。”

袁術請求呂布攻打劉備,曹操派遣夏侯停援救劉備,交戰不利。劉備被高順打敗。九月,曹操東征呂布。冬季十月,在彭城進行屠殺,前進到了下邳(pī),呂布親自帶領騎兵迎戰。大敗呂布,俘獲了他的勇將成謙。追趕到城下,呂布恐慌,準備投降。陳宮等人阻止了他的打算,向袁術求救,鼓勵呂布出城交戰,又戰敗,於是回城固守,曹操沒有將城攻下。這時曹操連續作戰,士兵疲憊,打算回軍,采用荀攸、郭嘉的計策,決開泗水、沂水來淹下邳城。一個多月後,呂布的部將宋憲、魏續等人活捉了呂布、陳宮,把他們殺了,全城投降。太山郡的臧霸、孫觀。吳敦、尹禮、昌豨各自聚集一幫人。呂布打敗劉備的時候,臧霸等人全跟隨呂布。呂布戰敗,曹操俘獲了臧霸等人,寬厚地接納、對待他們,最後劃出青州。徐州靠海區委派他們管理,分出琅琊、東海、北海地區,設立城陽、利城、昌慮郡。

戰官渡破袁紹

袁紹已經吞並了公孫瓚,兼並了四州的地區,率領軍隊十多萬人,將要進軍攻打許都。曹操各將領認為不可抵抗。曹操說:“我了解袁紹的為人,誌向大而才智小,表麵嚴厲而內心怯懦,嫉妒刻薄而缺少威望,考慮周全而猶豫不決,謀士多卻不為他所用,士兵雖多卻指揮籌劃不當,將領驕橫而且政令不統一,土地雖然廣闊,糧食雖然豐足,卻正好是把這些作為我的奉獻啊。”秋季八月,曹操向黎陽進軍,派臧霸等進入青州攻破齊、北海、東安,留下於禁在黃河邊駐守。九月,曹操回到許都,分出部分兵力把守官渡。冬季十一月,張繡率領部隊投降。十二月,曹操在官渡駐軍。

次年二月,袁紹派遣郭圖、淳於瓊、顏良在白馬攻打東郡太守劉延,袁紹領兵到了黎陽,準備渡過黃河。夏季四月,曹操往北救援劉延,荀攸勸說曹操道:“如今我們兵力少不能抵擋,分散敵人的兵力才可以取勝。您到了延津,裝作準備渡過黃河向他們的後方進軍,袁紹必定往西迎戰您,然後派輕裝部隊襲擊白馬,趁他們沒有防備,就可以捉住顏良了。”曹操聽從了荀攸的計策。袁紹聽說曹軍渡過黃河,立即分出兵力往西迎戰曹軍。曹操就率領軍隊急行,直奔白馬,離白馬尚有十多裏,顏良大驚,前來迎戰。曹操派張遼、關羽做先鋒,先打敗了敵人,斬了顏良,終於解除了白馬之圍,遷徙白馬的百姓,循著黃河朝西走。袁紹在這時渡過黃河追擊曹操的部隊。追到延津的南麵,曹操指揮軍隊在西麵山坡下紮營,派人登上營壘望敵軍,報告說:“大約有五六百騎兵。”過了一會兒,又報告:“騎兵逐漸增多,步兵多得數不過來。”曹操說:“不用再報告了。”就下令讓騎兵禦下馬鞍放開馬匹。這時,白馬駐軍的輜(zī)重已經上路。各將領認為敵軍的騎兵多,不如回去守衛軍營。荀攸道:“這是用來引誘敵人上鉤的,為什麼要離開這兒呢?”袁紹的騎兵將領文醜和劉備帶領五六千騎兵先後來到。各將領又說:“可以上馬了。”曹操說:“可以了。”於是大家都上馬,當時騎兵不足六百人,就揮軍出擊,大敗敵軍,斬了文醜。顏良、文醜都是袁紹的有名將領,兩次交戰,都被擒殺,袁紹的軍隊大為震動,曹操回軍官渡。袁紹進軍保衛陽武。關羽逃回劉備那兒。

八月,袁紹連接營壘逐漸向前推進,靠著沙丘駐紮,從東到西連綿數十裏。曹操也分紮營壘跟敵方對抗,交戰不利。當時曹操兵力不足一萬人,傷員占十分二三。袁紹軍隊前進到官渡,堆土山挖地道。曹操也在營內堆土山挖地道,跟敵軍對抗。袁紹軍射箭入曹軍營中,箭下如雨,走動的都要用盾牌遮擋,大家非常害怕。這時曹操糧食少,給荀彧寫信,商議打算撤回許都。荀彧回信說:“袁紹全部人馬聚集在官渡,準備跟您決一勝負。您以最弱小的兵力對抗最強大的敵軍,如果不能製服他,必定被敵軍所追逐,這是天下的重大轉機啊。況且袁紹隻是一個一般的豪雄罷了,能夠聚集人才卻不能使用人才。憑借您的神武英明並且加上以天子之命討伐叛亂的正當名義,有什麼事而不能做成功呢?”曹公聽從了荀彧的意見。

袁紹數千輛運送穀物的車子到達,曹操采用荀攸的計策,派徐晃、史渙去截擊,大敗袁軍,全部燒毀了袁紹的運糧車。曹操跟袁紹相持了幾個月,雖然每次交戰都斬殺敵將,但是兵少糧盡,士兵疲乏。曹操對運糧的人說道:“再過十五天替你們打敗袁紹,不再讓你們勞苦了。”冬季十月,袁紹派車運糧,令淳於瓊等五個人帶領一萬多士兵護送車隊,露宿在袁紹軍營北麵四十裏的地方。袁紹的謀臣許攸貪婪無度,袁紹不能滿足他,就前來投奔曹操,借機勸說曹操攻打淳於瓊等人。曹操身邊的人懷疑他。荀攸、賈詡勸說曹操采納。曹操於是留下曹洪防守,自己帶領五千步兵和騎兵乘夜前往,恰在天亮時到達。淳於瓊等人望見曹操兵少,出去到營門外布陣。曹操急速攻擊淳於瓊,淳於瓊退守營房,於是就攻打淳於瓊的營房。袁紹派騎兵援救淳於瓊。曹操身邊的人有的說:“敵人的騎兵逐漸接近,請求分兵抵抗他們。”曹操發怒說:“敵人到背後才報告!”士兵都拚死作戰,大敗淳於瓊等人,把他們全斬了。袁紹剛聽到曹操攻打淳於瓊時,對大兒子袁譚說道:“趁他攻打淳於瓊等人,我去攻占他的軍營,他就沒有地方落腳了!”於是派張郃(hé)、高覽攻打曹洪。張郃等人聽到淳於瓊敗亡,就前來投降。袁紹軍隊大潰敗,袁紹和袁譚扔下軍隊逃跑,渡過了黃河。曹軍追趕上他們,全部繳獲了他們的輜重、圖表文書和珍寶,俘虜了他們的部眾。曹操繳獲袁紹的信件中,有許都和曹軍中的人和袁紹來往信件,曹操把它們全部燒掉了。冀州各郡很多城邑都自動投降了。

六年夏季四月,曹操在黃河邊檢閱軍隊,攻擊袁紹在倉亭的軍隊,把它打敗。袁紹回來,又收攏被打散的士兵,平定了各反叛的郡縣。九月,曹操回到許都。

袁紹自從軍隊被打敗之後,發病吐血,在夏季五月死去。小兒子袁尚接替他的官職,袁譚自稱車騎將軍,駐紮在黎陽。秋季九月,曹操征討他們,連續交戰,袁譚、袁尚屢次戰敗退卻,堅守黎陽。