建安元年(196),曹操挟献帝都许。袁术怒刘备领徐州,举兵攻之,刘备拒于淮水。曹操表刘备为镇东将军,封宜城亭侯。袁术结吕布,吕布遂袭取下邳,刘备败走海西。刘备饥困,向吕布求和。吕布不愿袁术强,乃迎回刘备,使屯沛县,而自称徐州刺史。
刘备还沛县,复合兵得万余人。吕布不愿刘备强,寻复击之。刘备走归曹操。程昱说曹操曰:“观刘备有雄才而甚得众心,终不为人下,不如早图之。”曹操迎得天子,正踌躇满志,乃答曰:“方今收英雄时也,杀一人而失天下之心,不可。”(《三国志·武帝纪》)乃厚待之,表为豫州牧,并给粮兵,遣至沛县收拾散卒,东击吕布。
曹操使献帝下诏袁绍,责以不勤王,而自图割据,擅相讨伐。袁绍上书辩护,说自己破家为国,从无异志。曹操于是表袁绍为太尉,封邺侯。袁绍不满曹操挟持天子,自为大将军,忘恩负义,竟号令到自己头上,故耻为之下,表辞不受。曹操尚畏其实力,乃将大将军让之,自为司空,行车骑将军。其实这时这些名号不过是虚有其名而已。曹操与袁绍日益不睦。
张济因粮尽自陕县入荆州,攻穰县,中流矢死,侄子张绣领其众。刘表使人抚纳,引为己援,以拒曹操。张绣乃得据南阳。
二年(197),曹操征南阳,张绣降。曹操纳张济妻,张绣恨之。曹操闻其不悦,密谋杀之。谋泄,张绣掩袭曹操,曹操军败。
袁术称号,遣使告孙策、吕布。孙策作书责而绝之,而向许都奉贡。曹操表其为骑都尉,袭乌程侯,转年再表拜为讨逆将军,封吴侯。沛相陈珪劝吕布不要为虎作伥,引火烧身。吕布遂收其使送与曹操斩首。曹操表其为左将军。袁术大怒,举兵攻打吕布,不胜;寻又进犯曹操,败绩。
袁绍并河朔,势力大盛,对曹操悖慢无礼。他每接诏书,便感于己不利,遂遣使说曹操,许都潮湿,洛阳残破,宜徙都鄄城,以就全实。鄄城靠近邺县,袁绍是欲移天子自近。曹操拒之。曹操知道袁绍已是头号大敌,另吕布、张绣等皆未宾服,自己是独以兖豫二州抗天下六分之五。荀彧乃出计:宜急肃清近敌,安抚周边,然后全力以图河北。曹操然之。
三年(198),曹操围张绣于穰县。刘表遣兵救之。袁绍叛卒投曹操,说袁绍将袭许都迎天子。曹操乃还。吕布使人去河内买马,为刘备兵所抄。吕布由是又结袁术,出兵攻打刘备,刘备败走,曹操遣夏侯惇往救,亦不敌。曹操亲征,与刘备合兵,围吕布于下邳,生擒吕布、陈宫,皆杀之,降张辽、臧霸等。吕布虽求援于袁术,但袁术已是自顾不暇。
四年(199),曹操班师,表刘备为左将军,礼遇甚重。曹操宴刘备,语之曰:“今天下英雄,唯使君与操耳。本初之徒,不足数也。”刘备方进食,失匕箸(《三国志·刘备传》)。时车骑将军董承受献帝密诏,谋诛曹操。刘备遂参与进去。董承为灵帝母董太后侄子,为献帝舅。
袁术穷途末路,欲北投袁绍。曹操遣刘备邀击之。程昱、郭嘉闻之,劝曹操不可放纵刘备。曹操悔,追之不及。刘备至徐州,袁术已病死,他遂背曹操,与袁绍连和。时袁绍已灭掉公孙瓒,兼四州之地,将挥军南下。曹操遣兵拒之。
袁绍、曹操皆遣人招张绣。张绣欲归袁绍。时贾诩为张绣谋士。献帝出长安,贾诩离开李傕,辗转至南阳,投靠张绣。贾诩认为宜从曹操。张绣不解,曰:“袁强曹弱,又与曹为仇,从之如何?”贾诩曰:“此乃所以宜从也。夫曹公奉天子以令天下,其宜从一也;绍强盛,我以少众从之,必不以我为重,曹公众弱,其得我必喜,其宜从二也;夫有霸王之志者,固将释私怨以明德于四海,其宜从三也。愿将军无疑!”(《三国志·贾诩传》)张绣从之,率众降曹操。曹操大喜,厚待二人。
五年(200)正月,董承等谋泄,皆伏诛。曹操将征刘备。诸将认为袁绍大敌当前,不应避重就轻,贻误紧要。曹操认为袁绍虽有大志,而行动迟缓,刘备乃为人杰,若不时击,必为后患,遂东击之。刘备以为曹操当拒袁绍,不备,败奔袁绍,曹操擒关羽归。《三国志·袁绍传》曰:曹操征刘备,田丰说袁绍袭操后,袁绍辞以子疾,不许。田丰举杖击地曰:“夫遭难遇之机,而以婴儿之病失其会,惜哉!”《三国志·于禁传》曰:曹操初征袁绍,使于禁率二千兵,守延津以拒袁绍。刘备以徐州叛,曹操东征之。袁绍攻于禁,于禁坚守,袁绍不能拔。于禁复与乐进等将步骑五千,攻汲、获嘉二县,后还官渡。我认为,田丰说袁绍袭曹操后,袁绍并未完全不从,还是出了一些兵的。