吕布为当时名将,先为董卓部将,后与王允定计诛杀董卓。
当时只有鄄城(今属山东)和东郡的范(今山东范县东南)、东阿(今山东阳谷东北)两县尚在曹操掌握之中,分别由司马荀彧和寿张令程昱、东郡太守夏侯惇等坚守,形势异常危急。
曹操从徐州赶回,听说吕布屯于濮阳,遂进军围攻濮阳。
二军相持百余日,蝗灾大起,双方停战,曹操军还鄄城。
此时,曹操失去了兖州,军粮已尽,袁绍派人来劝说想让曹操投靠他,让曹操举家迁到邺县当人质。
曹操本打算答应袁绍,多亏程昱劝阻,曹操才打消这个念头。
公元195年(兴平二年),曹操整军再战吕布,三败之,破定陶、庸丘等,平定兖州。
吕布逃往徐州投靠刘备。七月,因李傕、郭汜的火拼,汉献帝从长安东归,下诏让各路诸侯勤王。
公元196年(建安元年)八月,曹操迎汉献帝。辛亥,汉献帝封曹操为司隶校尉,录尚书事。
庚申,迁都许昌。冬十一月丙戌,汉献帝封曹操为司空,行车骑将军事,百官总己以听。
公元197年(建安二年)春正月,曹操讨伐张绣,军队驻扎在淯水,张绣举众投降,旋即复叛,长子曹昂、侄子曹安民、猛将典韦战死。
此后,曹操又两度攻击张绣,都没有彻底击破。秋九月,曹操东征袁术,袁术弃军而逃至淮河,枭袁术留守四将。
公元198年(建安三年)夏四月,曹操遣谒者裴茂率中郎将段煨讨李傕,夷三族。九月,曹操东征徐州,进攻久与他为敌的吕布。
在曹军攻势之下,吕布军上下离心,十二月,吕布部将魏续、宋宪等生擒陈宫归降曹操。
吕布见大势已去,下城投降。
其实是吕布被部将宋宪魏续绑住献给曹操的!!
曹操将吕布、陈宫、高顺等人处死,收降吕布部将张辽以及泰山豪杰臧霸、孙观等人,初步控制了徐州。
公元199年(建安四年),曹操派史涣、曹仁击破张杨旧部眭固,取得河内郡,把势力范围扩张到黄河以北。
消灭睦固后,为了应对之后与袁绍的战争,曹操预作布置,命在青州有潜在影响的臧霸等人攻入青州,占领齐(治今山东临淄)、北海(治今山东寿光东南)等地,巩固右翼。
又命大将于禁屯军黄河南岸,监视袁军。
不久,张绣听从谋士贾诩之计,投降曹操,曹操大喜,拜张绣为扬武将军,解除了后顾之忧。
公元199年(建安四年刘备在陶谦死后,曾一度出任徐州牧,后徐州被吕布攻占,刘备投奔曹操。