曹操挾天子遷都許縣以後,他的主要對手是北邊冀州的袁紹,東南邊的袁術,東邊的呂布以及南邊的張繡、劉表和西北方的馬騰、韓遂,其中力量最強的是袁紹,韓遂尚未對自己構成威脅,曹操對於遠處實力較強的袁紹,先采取“和”的方針,他要討伐的第一個目標就是張繡。
在許縣屯田的第二年,曹操發現軍糧問題已經有眉目了,便開始著手討伐張繡之事。
張繡,武威祖厲(今甘肅靖遠)人。張繡是驃騎將軍張濟的侄子。邊章、韓遂在涼州作亂之時,金城的麹勝襲殺祖厲長劉雋。張繡當時為縣吏,不久就尋找機會刺殺了麹勝,本郡的人都認為他很講義氣,於是張繡招合少年,成為本地豪傑。
192年,董卓被殺,張濟與李傕、郭汜等人進攻長安,為董卓報仇。張繡跟隨張濟,以軍功升至建忠將軍,封宣威侯。196年,張濟自關中引兵入荊州界,攻穰城,中流矢而死。張繡接管了他的部隊,屯住在宛城,與劉表聯盟。
197年,曹操南征,部隊到達淯水,張繡率眾投降。曹操娶了張濟的遺孀,張繡因此懷恨曹操。曹操聽說張繡不高興,就秘密準備殺掉張繡。結果計劃泄漏,張繡偷襲曹操,曹操戰敗,長子曹昂、侄子曹安民被殺,猛將典韋戰死。張繡引兵追擊,被曹操擊退,於是張繡退回防守穰城,再次與劉表聯盟。(《傅子》說:曹操給張繡寵愛親近的胡車兒發密報,張繡聽說了以後懷疑曹操想用胡車兒刺殺他,遂反叛。)
汜水兵敗後,同年冬天,曹操再度攻張繡,擊敗了張繡和劉表的聯軍,收複了一些失地,而到了198年三月,曹操第三次進軍並圍攻張繡的根據地穰縣(今河南鄧縣)。
這一戰一打就是兩個月,並且始終沒有攻下來,此時,曹操得知袁紹發兵許縣了,曹操立即放棄繼續攻打穰城,班師回朝。張繡率軍追擊,同時,劉表的軍隊也開始夾擊曹操,在這千鈞一發的時刻,曹操卻十分淡然地給荀彧寫了一封信,信的內容是:“我到安眾(今河南鎮平)一定破敵。”到達安眾之後,曹操遭到兩麵敵人的夾擊,已經是腹背受敵,曹操趕緊命人在夜間悄悄鑿了地道,將軍械糧草都運送了過去,並埋伏了士兵,到第二天一大早,張繡、劉表發現人好像人間蒸發了,以為曹操逃跑了,便讓全軍將士追擊,誰知曹操此時突然反撲,埋伏的士兵突然衝了出來,打了張繡和劉表一個措手不及。
袁紹帶兵回到許都後,荀彧過來問曹操為何能在如此為難的情況下破敵,曹操說:“敵人阻擋我退軍,將我逼到絕境,我就有絕處逢生的方法。”
曹操在打聽到袁紹並沒有采取田豐襲擊許都的建議後,才稍稍放下心來。
不久,南邊局勢穩定,荀彧對曹操提出建議,可以東征呂布了,曹操遂采納建議,平定了徐州,並大敗了袁術。
建安四年(199年)七月,袁紹與曹操在官渡一線對峙後,企圖拉攏張繡一起攻打許都,還寫了信表示友好,張繡認為袁紹勢力強大,可以依靠,但賈詡卻打發了前來的使者,並說:“你回去告訴袁本初,他連自己的兄弟都容不下,更何況天下英雄豪傑呢?”
賈詡所說的兄弟,其實指的是袁紹和袁術這哥倆。兩人雖為兄弟,但卻因為政治立場的不同而分道揚鑣、兵戎相見,袁術集團的衰落與袁紹這個哥哥有著直接的關聯。就在不久之前的六月份,袁術在壽春鬱鬱而終。賈詡的這番言論,不但挫敗了袁紹與張繡結盟的企圖,而且出言羞辱袁紹,更是將雙方的關係變得水火不容。
看到賈詡的表態,張繡不禁大驚失色,他完全沒有想到賈詡竟然會如此果斷地拒絕了袁紹的好意。事後他憂心忡忡地問賈詡:“怎麽事情會變成這樣?先生拒絕了袁紹,那下一步我們又該如何呢?”賈詡的回答又讓張繡感到非常意外。賈詡認為按照目前的局勢應該去依附曹操。張繡不解地問道:“袁紹強大而曹操弱小,而且我們與曹操進行了數年的征戰,雙方勢如水火,曹操怎麽可能接納我們呢?
賈詡認為投降曹操有三點優勢:曹操挾天子令諸侯,名正言順;曹操兵力較弱,更願意拉攏盟友;曹操誌向遠大,一定能夠不計前嫌。張繡聽從賈詡的建議,率眾歸順曹操。曹操聞訊後大喜,親自接見賈詡,執其手說:“使我的信譽揚於天下的人,是你啊!”曹操拜賈詡為執金吾,封都亭侯,遷冀州牧。由於當時冀州為袁紹所占,賈詡便留參司空軍事,同時拜張繡為揚武將軍,並讓其子曹均娶張繡之女為妻。
這樣,賈詡便同荀攸、郭嘉等謀士一起,成為曹操智囊團中的重要一員,為曹操出謀劃策,成為曹操統一北方過程中不可或缺的人才。