曹操挟天子迁都许县以后,他的主要对手是北边冀州的袁绍,东南边的袁术,东边的吕布以及南边的张绣、刘表和西北方的马腾、韩遂,其中力量最强的是袁绍,韩遂尚未对自己构成威胁,曹操对于远处实力较强的袁绍,先采取“和”的方针,他要讨伐的第一个目标就是张绣。
在许县屯田的第二年,曹操发现军粮问题已经有眉目了,便开始着手讨伐张绣之事。
张绣,武威祖厉(今甘肃靖远)人。张绣是骠骑将军张济的侄子。边章、韩遂在凉州作乱之时,金城的麹胜袭杀祖厉长刘隽。张绣当时为县吏,不久就寻找机会刺杀了麹胜,本郡的人都认为他很讲义气,于是张绣招合少年,成为本地豪杰。
192年,董卓被杀,张济与李傕、郭汜等人进攻长安,为董卓报仇。张绣跟随张济,以军功升至建忠将军,封宣威侯。196年,张济自关中引兵入荆州界,攻穰城,中流矢而死。张绣接管了他的部队,屯住在宛城,与刘表联盟。
197年,曹操南征,部队到达淯水,张绣率众投降。曹操娶了张济的遗孀,张绣因此怀恨曹操。曹操听说张绣不高兴,就秘密准备杀掉张绣。结果计划泄漏,张绣偷袭曹操,曹操战败,长子曹昂、侄子曹安民被杀,猛将典韦战死。张绣引兵追击,被曹操击退,于是张绣退回防守穰城,再次与刘表联盟。(《傅子》说:曹操给张绣宠爱亲近的胡车儿发密报,张绣听说了以后怀疑曹操想用胡车儿刺杀他,遂反叛。)
汜水兵败后,同年冬天,曹操再度攻张绣,击败了张绣和刘表的联军,收复了一些失地,而到了198年三月,曹操第三次进军并围攻张绣的根据地穰县(今河南邓县)。
这一战一打就是两个月,并且始终没有攻下来,此时,曹操得知袁绍发兵许县了,曹操立即放弃继续攻打穰城,班师回朝。张绣率军追击,同时,刘表的军队也开始夹击曹操,在这千钧一发的时刻,曹操却十分淡然地给荀彧写了一封信,信的内容是:“我到安众(今河南镇平)一定破敌。”到达安众之后,曹操遭到两面敌人的夹击,已经是腹背受敌,曹操赶紧命人在夜间悄悄凿了地道,将军械粮草都运送了过去,并埋伏了士兵,到第二天一大早,张绣、刘表发现人好像人间蒸发了,以为曹操逃跑了,便让全军将士追击,谁知曹操此时突然反扑,埋伏的士兵突然冲了出来,打了张绣和刘表一个措手不及。
袁绍带兵回到许都后,荀彧过来问曹操为何能在如此为难的情况下破敌,曹操说:“敌人阻挡我退军,将我逼到绝境,我就有绝处逢生的方法。”
曹操在打听到袁绍并没有采取田丰袭击许都的建议后,才稍稍放下心来。
不久,南边局势稳定,荀彧对曹操提出建议,可以东征吕布了,曹操遂采纳建议,平定了徐州,并大败了袁术。
建安四年(199年)七月,袁绍与曹操在官渡一线对峙后,企图拉拢张绣一起攻打许都,还写了信表示友好,张绣认为袁绍势力强大,可以依靠,但贾诩却打发了前来的使者,并说:“你回去告诉袁本初,他连自己的兄弟都容不下,更何况天下英雄豪杰呢?”
贾诩所说的兄弟,其实指的是袁绍和袁术这哥俩。两人虽为兄弟,但却因为政治立场的不同而分道扬镳、兵戎相见,袁术集团的衰落与袁绍这个哥哥有着直接的关联。就在不久之前的六月份,袁术在寿春郁郁而终。贾诩的这番言论,不但挫败了袁绍与张绣结盟的企图,而且出言羞辱袁绍,更是将双方的关系变得水火不容。
看到贾诩的表态,张绣不禁大惊失色,他完全没有想到贾诩竟然会如此果断地拒绝了袁绍的好意。事后他忧心忡忡地问贾诩:“怎么事情会变成这样?先生拒绝了袁绍,那下一步我们又该如何呢?”贾诩的回答又让张绣感到非常意外。贾诩认为按照目前的局势应该去依附曹操。张绣不解地问道:“袁绍强大而曹操弱小,而且我们与曹操进行了数年的征战,双方势如水火,曹操怎么可能接纳我们呢?
贾诩认为投降曹操有三点优势:曹操挟天子令诸侯,名正言顺;曹操兵力较弱,更愿意拉拢盟友;曹操志向远大,一定能够不计前嫌。张绣听从贾诩的建议,率众归顺曹操。曹操闻讯后大喜,亲自接见贾诩,执其手说:“使我的信誉扬于天下的人,是你啊!”曹操拜贾诩为执金吾,封都亭侯,迁冀州牧。由于当时冀州为袁绍所占,贾诩便留参司空军事,同时拜张绣为扬武将军,并让其子曹均娶张绣之女为妻。
这样,贾诩便同荀攸、郭嘉等谋士一起,成为曹操智囊团中的重要一员,为曹操出谋划策,成为曹操统一北方过程中不可或缺的人才。