建安三年(198)九月,曹操采纳郭嘉之谋进攻吕布。曹军首战便攻破了吕布的重镇—— 彭城(今江苏徐州),俘获了彭城相侯楷;接着曹军进至下邳(今江苏睢宁西北),在下邳城郊与率骑兵前来迎战的吕布交锋,大败吕布,俘获了吕布的骁将成廉。吕布率军退入下邳城中,曹军乘胜围困攻城。吕布见势不妙,自率千余骑准备去袁术处求援,曹军再次击败吕布,粉碎了他突围请援的企图。吕布败后,缩回下邳城中坚守不再出战。曹操久攻不下,便想退军。郭嘉等人竭力劝说曹操继续攻城。郭嘉分析说:“吕布虽骁勇但无智谋。现在他三战皆败,锐气已衰,三军本以将为主,但陈宫的主意一向来得慢,如今正好乘吕布的锐气尚未恢复、陈宫的主意尚未拿定之时,进军急攻,必定可以彻底打垮吕布。”曹操听后觉得很有道理,便一面挥军攻城,一面引来沂水和泗水灌淹下邳。同年十二月,曹军果然攻克了下邳,擒杀了吕布和陈宫。
建安四年(199),战胜了公孙瓒的袁绍已“兼四州之地,众十余万”,准备进军攻许(今河南许昌东)。同年十二月,曹操亲率大军屯驻官渡(今河南中牟东北),以便阻止袁军南下。这时,被刘表击败的袁术,将率败军经过下邳。曹操便派刘备率军到下邳邀击袁术。郭嘉听说后大吃一惊,赶紧阻止曹操,说:“绝不能让刘备率军外出,一旦他外出必定会发生变乱。”这时,刘备已领军出发,曹操悔之不及。不久,刘备果然在下邳杀了曹操的徐州刺史车胄,屯兵于沛(今江苏沛县)反曹。曹操两面受敌,便打算迅速出军击败刘备,以便随后能全力对付袁绍,而部下的将领们都怕出征刘备时,袁绍乘机挥军从背后进攻。曹操沉吟难决,便向郭嘉问计。郭嘉分析说:“袁绍向来优柔寡断,并且又多疑,必定不可能迅速做出反应进攻我军。刘备刚刚拥兵反叛,众心尚未收服,立足未稳,迅速进攻,他必败无疑,这样就能飞快地结束战斗,回师全力对付袁绍。这是改变决战前夕腹背受敌的困境,决定存亡的机会,绝不能失去。”曹操坚定了信心,于建安五年(200)正月从官渡挥军东征刘备,一举击败了刘备并“获其妻子”,生擒刘备的大将关羽,夺回了下邳。情况确如郭嘉所料,当曹军东征时,袁绍的谋士田丰竭力劝袁绍出军偷袭曹军之后,但袁绍没有采纳。