这些事情发生后,曹操对于立嗣的问题犹豫不决。他询问贾诩:“我想立一个后继者,应该选择谁呢?”贾诩先是沉默不语,然后回答道:“我想起了袁绍和刘表因为立幼子为嗣而引发兄弟相争的事情。”曹操听后哈哈大笑,说:“你真是一个有远见卓识的谋士啊!”于是,曹操决定立长子曹丕为世子。
另一方面刘备夺取西川后,按照诸葛亮的计策,派遣张飞等将分别驻守巴西和下辨两地,积极备战,准备进攻汉中。曹操担心夏侯渊、张郃兵力单薄难以应对局势,为了保卫汉中,他派遣曹洪率领五万大军前往支援张郃和夏侯渊,并共同守卫东川。张郃对自己的实力颇为自信,轻视张飞,主动请求带领兵马攻打巴西,企图打开蜀郡的门户。然而,在首次战斗中,张郃就遭遇了失败,无奈之下只能退兵至宕渠山,坚守不出。张飞见此情形心生一计,命令士兵们每天在山前摆好酒席,与众将领一边饮酒一边辱骂张郃,试图激怒对方并引诱其出战。
宕渠山上,张郃听闻张飞每日饮酒作乐,以为有机可乘,于是率领军队连夜下山去偷袭张飞的营地。张郃率军来到张飞营帐前,看见“张飞”端坐在大帐内,心中大喜,急忙挺枪杀进帐内,却发现自己刺中的只是一个草人。张郃心知中计,慌忙拨马出帐,此时张飞已经杀到眼前。张郃大惊失色,仓促间只能迎战,但完全不是张飞的对手,只好拔马败走。
与此同时,张郃所据守的蒙头和荡石两个山寨,也已经被魏延和雷铜率兵攻破。张郃无奈之下,只得率领残部退守瓦口关。然而,张郃仍然不甘心失败,决定设计伏击张飞。张飞和魏延商议后,决定将计就计。次日,张飞亲自出马挑战张郃,张郃诈败,引入山谷。魏延则带领一军杀散伏兵,并放火烧山。张郃在火光中看到大势已去,知道无法抵挡张飞的攻击,只能弃马上山逃走。
张飞和魏延继续追杀张郃,张郃军被杀得大败,丢盔卸甲,狼狈不堪。张飞追杀至瓦口关下,张郃见势不妙,急忙紧闭城门,坚守不出。张飞无奈,只能在关前叫骂,但张郃始终不为所动。
张飞苦思冥想,却想不出破城之计。这时,一名小校告诉他,附近的村民可能知道通往瓦口关的小路。张飞大喜过望,立即找来几名村民询问。果然,他们告诉张飞,在山后确实有条小路,可以直通瓦口关。
张飞心中暗喜,决定亲自率领五百名轻骑兵,由村民带路,从小路直奔瓦口关背后。同时,他命令魏延引兵从正面攻关,吸引张郃的注意力。
张郃见魏延在关前挑战,以为张飞仍在前方,便放心地率军迎击。然而,当他与魏延激战正酣时,突然听到身后传来喊杀声。原来,张飞已经率军绕到了他的后方,杀进了瓦口关。