曹操回兵,曹仁迎接,说吕布势大,加上陈宫辅助,无法取胜。曹操说:“吕布有勇无谋,不足为虑。”吕布知曹操回军,让副将薛兰、李封领兵一万守兖州。陈宫提出应在泰山设伏,可一举消灭曹操。吕布不听,带兵守濮阳。
曹操路过泰山,郭嘉怕有伏兵,曹操却说不必担心,派曹仁领兵围兖州,亲率大军直逼濮阳。陈宫见曹兵到来,让吕布趁曹兵远来疲惫,乘势进攻。吕布根本不听。
次日,曹操列阵挑战,吕布率军迎敌,排下八员健将:张辽,字文远;臧霸,字宣高;还有郝萌、曹性、成廉、魏续、宋宪、侯成。
臧霸先出马,与乐进大战三十回合不分胜负。夏侯惇出马助战,张辽截住厮杀。吕布动怒,挺戟出马,夏侯惇、乐进败退,曹操兵败三十里。曹操回寨,于禁提议夜间去劫西面小寨,以动摇吕布军心。
吕布回城,陈宫让吕布提防西面小寨,以防曹兵偷袭。吕布不信,陈宫费尽口舌,吕布才派高顺、魏续、侯成去支援小寨。当夜曹兵杀来,小寨兵马四散奔逃,直到四更高顺等人才率军杀来,与曹兵大战。
天明时,吕布也率军赶到,曹操前后受敌,只好派于禁、乐进敌住吕布,望北逃去。走不多远,张辽、臧霸又杀来,吕虔、曹洪敌住,曹操望西而逃。郝萌、曹性、成廉、宋宪又领兵杀来,乱箭如雨,曹操吓得大叫:“谁来救我!”典韦冲来,挂上双戟,取出小戟,飞掷出去,连杀数十人才救曹操脱出重围。吕布纵马赶来,大叫:“操贼休走!”曹军人困马乏,眼看要全军覆没,夏侯惇领兵杀来,战住吕布。斗到黄昏时,下起瓢泼大雨,双方才各自收兵。曹操回营,重赏典韦,升他为领军都尉。
不几天,城中巨富田氏派人与曹操联络,说是吕布残暴不仁,趁吕布去了黎阳,田氏要献城,暗号是“义”字旗。刘晔怕是陈宫使的计,曹操却深信不疑,到城下观看,城西北角上果然在各种旗幡中杂有一面“义”字旗。当天双方交战,只有高顺、侯成出马,被典韦杀败,退回城中。有个军士乘机留在城外,向曹操呈上密书,上写:“初更时分,城上鸣锣为号,开门献城。”曹操要率军进城,众文武纷纷劝说,曹操只同意把人马分作三队,一队进城,两队在外接应,他亲自引夏侯渊、李典、乐进、典韦率兵进城。
初更时,西门大开。曹操一马当先,冲进城中,直到州衙,不见一人,知道中计,忙传令退兵。州衙中一声炮响,四门烈火冲天,金鼓齐鸣,张辽、臧霸两面夹攻。曹操逃往北门,碰上郝萌、曹性杀来。曹操走南门,又被高顺、侯成拦住。典韦当先冲杀,出了城不见曹操,又转身杀进城,碰见李典,李典也没见到曹操。典韦让李典去催救兵,自己四处找不到曹操,又杀出城,见了乐进,乐进也没见到曹操。城门上滚下火炮,典韦冲入烈火,再次杀进城。
曹操被困在城中,冲不出去,再转北门,火光中见吕布迎面而来,忙低头掩面,纵马前闯。吕布一戟敲在他的头盔上,问:“曹操在哪儿?”曹操回手指着,说:“骑黄马的就是。”吕布就去赶骑黄马的。
曹操逃向东门,正逢典韦。典韦当先开路,城上推下柴草,遍地是火。典韦用戟拨开,刚到城门边,城上推下一根着火的大梁,正打在曹操的马后胯上,马一头栽倒。曹操推开火梁,手臂烧伤,须发烧焦。恰好夏侯渊赶到,二人架起曹操,搀到夏侯渊的马上,保住曹操冲出城。
天明时,曹操回寨,众文武叩拜问安,曹操立誓报仇,定下一计。军士就放出风声,说是曹操被烈火烧成重伤,回寨就死了,军士们都穿上了孝衣。吕布得报,带人马杀奔曹寨,却在马陵山中了埋伏。吕布死战脱身,折了许多人马,退回城中,坚守不出。
这年遍地蝗虫,吃尽禾苗。曹兵无粮,退回鄄(juàn)城。吕布也领兵来到山阳。双方暂时罢兵。
陶谦已六十三岁,突然生病,越来越重,就请糜竺、陈登议事。糜竺认为,曹操退兵是因为吕布袭取兖州,日后还会来报仇,为了保护徐州百姓,必须把徐州让给刘备。陶谦派人到小沛请来刘备和关羽、张飞。刘备向陶谦问了安,陶谦第三次提出让徐州。刘备说:“使君有二子,为什么不传给他们呢?”陶谦说:“他们的才能不能担当重任啊!”刘备仍是推辞。
结果没多久,陶谦就去世了。临死前陶谦又推荐孙乾、糜竺好好辅佐刘备,就以手指心而死。众军举哀,送去印信,刘备仍不接受。第二天,徐州百姓拥到府衙前齐声痛哭,说:“刘使君若不接受徐州,我们都不能活了!”关羽和张飞也再三相劝,刘备最后终于同意了。刘备与大小军士全部挂孝,把陶谦葬在黄河之原,把陶谦遗表申奏朝廷。
曹操知道刘备接管徐州后,无比生气,发脾气说:“我的杀父之仇还没有报,刘备却不费吹灰之力得到了徐州,太可气了!”曹操气得要攻打徐州,但是被荀彧阻止了,荀彧说:“攻打徐州,容易因小失大,不如先取回兖州。”荀彧认为附近小县的黄巾军私藏很多财产,建议先去攻打这些小县,取得财物回来才好恢复势力。曹操觉得荀彧言之有理,就带着典韦等兵马去攻打这些小城。
曹兵与黄巾军在羊山排开战场。典韦先出战,何仪命副元帅出战,二人交手不到三回合,被典韦一戟刺死。次日再战,黄巾阵中冲出一员步将,名叫何曼,手持铁棍与曹洪大战四五十回合,不分胜负。曹洪使拖刀计杀了何曼。李典冲进敌阵活捉了黄劭。曹兵乘胜掩杀,夺得金银、粮草无数。何仪仅率数百人奔向葛陂。正走间,山后杀出一队人马,为首一个壮士舞刀杀来,只一回合就生擒了何仪,余者尽被活捉。典韦赶来向壮士讨何仪,壮士声称能胜他手中的刀就给。二人刀来戟往,大战到黄昏不分胜负,只因战马疲乏才各自收兵。曹操得报,率众将赶来。第二天,双方再交战。曹操命典韦诈败。典韦战三十回合,败走回阵,壮士追来,被乱箭射回。第三天,典韦又战壮士,不几回合回马就走,壮士赶上来,连人带马栽入陷坑,被活捉了见曹操。曹操亲自为壮士松绑,请他坐下,问起他的来历。壮士说:“我是谯县人,姓许,名褚(chǔ),字仲康。因贼寇多,我就聚宗族数百人,修筑堡垒,多次杀败入侵贼寇。”曹操问他愿不愿降,他表示愿降。曹操就命他当都尉,加以重赏。斩了何仪、黄劭,平定了汝南、颍州。
曹操回来,夏侯惇报告说如今兖州空虚,可以趁机夺回,于是曹操又出兵兖州,果然一举成功。
得到兖州后,程昱便建议去攻打吕布的驻扎地濮阳。曹操对这次战役做了精心安排,让许褚、典韦为先锋,夏侯惇、夏侯渊为左军,李典、乐进为右军,曹操亲领中军,于禁、吕虔为后援,安排好后才去攻打濮阳。吕布十分威猛,曹操差六个大将一起打他。吕布不敌,拨马回城。城中田氏降曹,于是吕布不得入城,奔定陶而去。陈宫急开东门,带着吕布一家老小出城。
曹操命令刘晔等守住濮阳,自己带领部下赶到定陶。当时正赶上麦熟时节,曹操接连几天不战,下令军士割麦为食。吕布定下火攻之计,曹操将计就计,埋下伏兵,结果吕布果然中计,损失惨重,于是曹操便把整个山东地区全部收归于己了。
吕布被曹操打败后,原本打算收拾残余部队再打回来的,但是陈宫觉得曹操现在兵力强盛,建议吕布还是先找安身之处再说。吕布本来还想再去投奔袁绍的,但是袁绍却已经要去帮助曹操了。吕布没办法,只好听从陈宫的建议去徐州投奔刘备。到了徐州,刘备十分客气,还要把徐州让给吕布接管,但是关羽、张飞不同意,吕布也不敢答应。
吕布在刘备这里仍然很傲气,张飞很不喜欢他。有一次吕布称刘备为“贤弟”把张飞给惹恼了。张飞要去打吕布,被关羽和刘备制止住了。吕布觉得在刘备这儿也不行,就想走,但是刘备坚持挽留,最后决定把小沛给吕布,于是吕布就带着人马安顿在小沛了。