建安二十年(215),曹操亲统大军自陈仓出散关,进攻盘踞汉中的张鲁。张郃先率兵击破了挡道的兴和氐王窦茂,接着又奉命带领五千人,为曹操大军开路。兵至阳平关,击败了守关的张鲁之弟张卫,斩其将杨任,张鲁逃至巴中后投降。曹操命夏侯渊与张郃留守汉中,自己班师而归。张郃又率军攻下巴西、巴东二郡,准备徙其民于汉中,但被蜀将张飞击败,张郃弃马从山路逃回南郑,身边只剩数十人。这是张郃一生中少有的惨败,但曹操并未怪罪于他,反而委任张郃为荡寇将军。
建安二十四年(219),刘备亲率精兵,分十部夜袭张郃,张郃坚决抵抗。这时,征西将军夏侯渊闻讯后带领精兵赶来救援,刘备手下大将黄忠迎击夏侯渊于汉中定军山,“劝率士卒,金鼓震天,欢声动谷,一战斩渊,渊军大败”(《三国志·黄忠传》)。夏侯渊被杀后,刘备并未感到轻松,刘备深知,他的劲敌是张郃而不是夏侯渊。据《三国志·张郃传》引《魏略》载:渊虽为都督,刘备惮郃而易渊。及杀渊,备曰“当得其魁,用此何为邪”。
夏侯渊被杀后,曹魏军一时群龙无首,面临灭顶之灾,军心十分混乱。在这危难关头,“渊司马郭淮乃令众曰:‘张将军,国家名将,是备所惮;今日事急,非张将军不能安也。’遂推郃为军主”。张郃受任于危难之际,毅然挑起了主将的重担,军队的情绪迅速安定下来,曹魏军也转危为安。曹操亲自领军增援汉中,接回了驻守汉中的军队,但汉中却被刘备夺走。