曹操安全度过泰山后,命曹仁围住兖州,自己带兵速攻濮阳。这时候,濮阳的陈宫得到了曹操朝濮阳奔过来的消息,马上向吕布建议,曹兵一路奔袭而来,必定疲惫,应该速战,不能给他休息的机会养成气力。吕布说废话,我单枪匹马纵横天下,难道会怕曹操?等会儿他一来我就打。陈宫一听就沉默了,罢了,好歹结果是好的。
第二天两军摆开阵势,曹操指着吕布说,你我无冤无仇,你干嘛夺我州郡。吕布哈哈大笑,大汉天下人人有份,凭什么是你一个人的?(这话搁在太平世道是要被杀头的)说罢吕布就命臧霸出战,曹操这边乐进上前迎敌。两人打了三十多个回合不分胜负,曹操一看怎么还僵持了,又让夏侯惇去助战。曹操这边多出一个人,吕布这边也不能闲着,张辽拨马出阵对战夏侯惇,四个人转着圈的围打厮杀,半天不见胜负。吕布急了,提着方天画戟也加入了战斗,夏侯惇和乐进都知道吕布的厉害,一看他来了,马上退了回去,吕布大军压着追杀,把曹操打退了三四十里。
曹操输了一阵也不急躁,他知道这是兵家大忌,又叫了人坐一起开会。会议的主题就是打输了不要紧,怎么才能打赢是要紧的。乐进说今天我被打跑其实是战略性的撤退,我仔细看过了,吕布在濮阳西部有一寨,士兵不是很多,今天我们败了一阵,吕布必定不做准备,我们就趁机攻击他的西寨。
理论上说,乐进的想法是没毛病的,所以曹操听从了乐进的建议。带了典韦于禁等人连夜从小路出发伏击吕布西寨。可万万没想到的是,与此同时,在吕布这把,陈宫也提出了西寨兵寡的问题,吕布说曹操都输了一阵了怎么还敢来?陈宫说曹操会用兵,我们要防止他攻其不备。好在这次吕布的心情不错,可能是刚打赢了一次的原因,吕布听了陈宫的建议,派了高顺和侯成魏续三人加防西寨。
这么一来结局就显而易见了,曹操这一行受到了来自高顺等人的强烈打击,曹操被冲散在乱军之中,无法脱身,只能大喊大叫,我是曹操谁来救我啊!这一喊引来了自己的士兵,同时也引来了追兵。不过好在曹操引来的救兵,是典韦。
典韦飞身下马,把自己的马给曹操骑上,手里拿着数十支短戟跟着马跑的快的后面的追兵骑马都追不上。典韦对旁边的士兵说,敌人离我十步的时候叫我,不一会儿士兵就喊道,十步了!典韦又说,等离我五步的时候再叫我!没一会儿士兵又叫道,五步了将军!典韦手中的短戟一齐扔出去,射杀数十人,敌军一看我的天呢,这么厉害,一下子全散了。典韦又抢过敌人的马杀出一条血路,这才救出了曹操。