(一)潛心收容劉備
曹操自在兗、豫二州建立根據地以來,屢次征伐,對群雄展開各個擊破的戰略,以解除後顧之憂,以便將來與袁紹放手一搏。而當曹操討伐徐州時,不料後院起火,兗州後方發生了叛亂。陳留太守張邈在陳官的勸說下,迎戰呂布,企圖趁機奪占兗州。幸虧荀彧、程昱等堅守-城、範縣、東阿三城,使得曹操尚且可以進退有據。曹操聞訊後,引兵回救,在定陶、巨野兩次戰役中,大敗呂布,才安定了當時緊張的局麵。呂布戰敗後,逃到徐州依附劉備,以後又襲取了劉備的下邳(今江蘇邳縣),自稱徐州牧。
漢獻帝建安元年(196年)冬,呂布見到劉備收集到萬餘名兵士,勢力漸大,心中不安,親自率軍進攻劉備,劉備戰敗,喪失根據地之後,便率眾來投奔曹操。如何對待前來投靠的劉備,便成為一個迫在眉睫的問題,就在曹操猶豫不決的時候,荀彧對曹操說:“劉備有雄心壯誌,現在不趁早解決他,日後必定會成為禍患。”曹操又去詢問郭嘉,郭嘉說:“除去劉備看似有道理。劉備胸懷雄才大略,誌在天下,深得民心,關羽、張飛乃天下名將,與劉備情深義重,生死相隨。因此劉備肯定不會甘心久居他人之下。主公您以誅國賊、匡扶漢室為宗旨,但是您發動正義之師,是誌在為天下百姓除殘滅暴,大張旗鼓地招賢納士,廣羅人才,還恐怕他們不來。如今劉備有英雄之名,因走投無路來投靠您,您如果除掉他,就會背上殺害賢才的惡名。如此,則會使人人自危,另外擇主,您還與誰去平定天下呢!為了除去一己之禍患,而使天下人失望,是關係今後安危的大計,這中間的利害關係,輕重緩急,不可不詳細考慮啊。”聽了郭嘉的一番話,曹操打消了疑慮,他收留並厚待劉備,上表朝廷,任命劉備為豫州牧,增加劉備部下的軍隊,供給糧草。還讓他向東進發,收集被打散的殘部,以對付呂布。
郭嘉勸曹操收容劉備,雖然暫時籠絡住了劉備,但曹操的處境並不是非常安全穩固。那個時候,南有袁術、劉表、孫策、張魯,北有袁紹、公孫瓚,東有呂布,西有馬騰、韓遂、張揚,兗、豫二州又處在四方戰鬥之地,曹操集團實在是四麵受敵。曹操與他的謀士們,日夜分析形勢,研究如何才能擊破中原群雄。他們意識到自己處於內線作戰,又麵臨敵強我弱的不利態勢;袁紹自然是最主要的敵人,而呂布卻是最凶惡的敵人。於是,最終確定了“先弱後強,各個擊破”的戰略方針。
(二)急速東征呂布
建安三年(198年)秋,曹操決定東征呂布。對此,曹軍內部曾有不同意見,一些將領認為劉表、張繡在後,遠征呂布,隻怕有危險。之前,曹操詢問荀彧和郭嘉道:“袁紹不義,我想出兵討伐,但實力又恐不敵,該怎麼辦呢?”荀彧主張先打呂布,認為“不先攻取呂布,河北(指袁紹)也不能夠攻取”。郭嘉也說:“袁紹正在北方圍攻公孫瓚,可以乘此機會,東取呂布。如不先消滅呂布,一旦袁紹來犯,呂布再出兵援助他,那就為患大矣。”另一位謀士荀攸也認為:“呂布驍勇無比,又依仗袁術幫助,如果任他縱橫於淮水、泗水之間,一些豪傑一定會響應。現在乘他剛剛反叛之機,內部還眾心不一,立刻前去攻打,必然能夠成功。”
曹操采納郭嘉的策略進攻呂布,曹軍首戰便攻破了呂布的重鎮——彭城,俘獲了彭城相侯楷,接著又攻至下邳,在下邳城郊和前來迎戰的呂布交鋒,打敗了呂布的騎將成廉。廣陵(今江蘇揚州)太守陳登背叛呂布,率領郡兵作為曹軍的先鋒。進抵下邳(今江蘇邳縣西南)。呂布屢次親自出戰,都大敗而歸,隻好退守城池,不敢出戰。曹軍乘勝圍城,寫信勸呂布投降。呂布見曹軍勢大,心中害怕,想要投降。但謀士陳宮勸呂布率軍出外截斷曹軍糧道,自己率眾守城,等曹軍糧盡,就可將其擊潰。但呂布惑於妻子之言,擔心城池失守,沒有聽從陳宮的建議。呂布派屬官許記、王楷向袁術求救,袁術雖勉強答應,但隻是動員軍隊,作為呂布的聲援。呂布恐怕袁術因為自己的女兒不去而不發兵,就用絹帛將女兒裹住,綁到馬上,乘夜親自送女兒出城,但遇到曹操圍城的軍兵,曹軍弓弩齊發,呂布無法通過,隻好又退回城中。河內(今河南武臥西南)太守張楊一向與呂布關係較好,想去援救,但兵力不足,隻能出駐野王縣(今河南沁陽)東市,遙作聲援。十一月,張楊的部將楊醜殺死張楊,響應曹操,至此,呂布的外援全部斷絕。曹操命部下挖掘塹壕圍困下邱,時間拖得很久,軍中士卒疲憊不堪,曹操打算撤軍。夜晚,天昏地暗,郭嘉對曹操說:“我們可以在北門少置兵力,故意讓呂布知曉,他必定會從此門突圍求援,然後在半路埋伏兵力,殺他個片甲不回。”曹操連聲叫好,按郭嘉的謀劃去布置。