皇帝東遷的時候,楊奉從梁縣企圖截擊漢獻帝,沒有趕上。冬季十月,曹操征討楊奉,楊奉向南投奔袁術,於是曹操就攻打他的梁縣的軍營,占領了它。這時朝廷任命袁紹做太尉,袁紹對自己的官職在曹操之下而感到羞恥,不肯接受。曹操於是堅決推辭,把大將軍的官職讓給袁紹。漢獻帝於是任命曹操做司空,兼車騎將軍。這年采用棗祗(zhī)、韓浩等人的建議,開始實行屯田製。
張濟從關中跑到南陽。張濟死後,侄子張繡統領他的部隊。建安二年春季正月,曹操到達宛城,張繡投降,不久為此而後悔,再次反叛。曹操跟他交戰,軍隊打了敗仗,自己被流箭所射中,大兒子曹昂、侄子曹安民遇難。曹操於是率領軍隊回到舞陰,張繡帶領騎兵前來侵掠,曹操打敗了他。張繡逃到穰(ránɡ)縣,與劉表聯合。曹操對各將領說道:“我接受張繡等人投降,錯誤在於沒有立即取得他們的人質,以致弄到這種地步。我明白失敗的原因了。各位看吧,從今以後不會再失敗了。”於是回到了許都。
袁術打算在淮南稱帝,派人告訴呂布。呂布扣留了他的使者,把他的信上報朝廷。袁術惱怒,攻打呂布,被呂布所打敗。秋季九月,袁術侵擾陳縣,曹操東征袁術,袁術聽到曹操親自前來,扔下軍隊逃跑,留下他的部將橋蕤(ruí)、李豐、梁紀、樂就。曹操到達,打敗了橋蕤等人,把他們全斬了。袁術逃過淮河。曹操回到許都。
曹操從舞陰回來,南陽、章陵各縣又反叛而歸附張繡,曹操派曹洪攻打他們,失利,退守葉縣,不斷地被張繡、劉表所侵擾。冬季十一月,曹操親自往南征討,到達宛城。劉表部將鄧濟據守湖陽。曹操攻占了湖陽,活捉了鄧濟,湖陽投降。攻打舞陰,也把它攻下了。
三年春季正月,曹操回到許都,開始設置軍師祭酒的官職。三月,曹操在穰縣圍攻張繡。夏季五月,劉表派兵救援張繡,切斷曹軍的後路。曹操率領軍隊往回撤退,張繡的軍隊前來追趕,曹操的軍隊不能前進,就連接軍營逐漸向前推進。曹操寫給荀彧的信說:“敵人前來追趕我,即使一天走幾裏地,我估計到達安眾,必定打敗張繡了。”到達安眾,張繡和劉表的軍隊聯合把守險要地區,曹操的軍隊前後受到敵人的攻擊。曹操於是乘夜在險要地區開鑿地道,全部運走了軍用物資,設置奇兵。正好天亮,敵人以為曹操偷偷逃跑了,全軍前來追趕。曹操於是出動奇兵,步兵和騎兵夾擊,大敗敵軍。秋季七月,曹操回到許都,苟彧問曹操:“先前預料敵人必定失敗,根據什麼呢?”曹操說:“敵人阻截我回軍,而跟被置於死地的我軍交戰,我因此知道將士奮死殺敵必定能夠取勝。”
袁術請求呂布攻打劉備,曹操派遣夏侯停援救劉備,交戰不利。劉備被高順打敗。九月,曹操東征呂布。冬季十月,在彭城進行屠殺,前進到了下邳(pī),呂布親自帶領騎兵迎戰。大敗呂布,俘獲了他的勇將成謙。追趕到城下,呂布恐慌,準備投降。陳宮等人阻止了他的打算,向袁術求救,鼓勵呂布出城交戰,又戰敗,於是回城固守,曹操沒有將城攻下。這時曹操連續作戰,士兵疲憊,打算回軍,采用荀攸、郭嘉的計策,決開泗水、沂水來淹下邳城。一個多月後,呂布的部將宋憲、魏續等人活捉了呂布、陳宮,把他們殺了,全城投降。太山郡的臧霸、孫觀。吳敦、尹禮、昌豨各自聚集一幫人。呂布打敗劉備的時候,臧霸等人全跟隨呂布。呂布戰敗,曹操俘獲了臧霸等人,寬厚地接納、對待他們,最後劃出青州。徐州靠海區委派他們管理,分出琅琊、東海、北海地區,設立城陽、利城、昌慮郡。
戰官渡破袁紹
袁紹已經吞並了公孫瓚,兼並了四州的地區,率領軍隊十多萬人,將要進軍攻打許都。曹操各將領認為不可抵抗。曹操說:“我了解袁紹的為人,誌向大而才智小,表麵嚴厲而內心怯懦,嫉妒刻薄而缺少威望,考慮周全而猶豫不決,謀士多卻不為他所用,士兵雖多卻指揮籌劃不當,將領驕橫而且政令不統一,土地雖然廣闊,糧食雖然豐足,卻正好是把這些作為我的奉獻啊。”秋季八月,曹操向黎陽進軍,派臧霸等進入青州攻破齊、北海、東安,留下於禁在黃河邊駐守。九月,曹操回到許都,分出部分兵力把守官渡。冬季十一月,張繡率領部隊投降。十二月,曹操在官渡駐軍。