郭图因为自己的计谋失败而感到惭愧,于是诬陷道:
“张郃对我军的失败感到高兴,并且出言不逊。”
张郃等将领惧怕被追究,于是烧掉了攻城橹,投降了曹操,曹操对张郃的投降感到高兴,亲自迎接并称“如微子去殷,韩信归汉也”,并将张郃拜为偏将军、封为都亭侯。
后来张郃颇受曹操重用,交给其部队,让他跟随自己攻打邺城,占领了邺城。
张郃又跟随曹操到渤海攻打袁谭,他单独率军包围了雍奴,击溃了袁军。
随同曹操征讨柳城的时候,张郃和张辽担任先锋,在白狼山之战中,受张辽指挥,大破乌桓,斩蹋顿及名王以下十余人,俘虏二十余万人,最终讨平乌桓,彻底铲除袁氏残余,张郃因为屡立战功升任平狄将军。
张郃还领兵征讨东莱郡,讨伐管承,后来,张郃与牛盖等人受到张辽的督领,一起讨伐陈兰、梅成等人,在天柱山之战中大获全胜。
张郃跟随曹操到渭南,击溃了马超、韩遂等,又包围了安定,杨秋投降。
张郃、夏侯渊一起征讨盘踞在鄜城的贼寇梁兴和武都一带的氐族叛军,再次击败了马超的部队,平定了宋建统治的地区。
建安二十年,曹操西征张鲁,抵达陈仓,准备从武都郡进入氐族部落,氐族人挡住道路,曹操派张郃统帅大军讨伐梁兴和氐族首领窦茂所部。
不久从散关入汉中,派张郃率五千步兵在前开道,一直到阳平,张鲁投降,曹操回军,留张郃与夏侯渊、徐晃等守汉中,以拒刘备。
同年,张郃别督诸军南下进攻巴东、巴西二郡,将当地百姓迁徙到汉中,刘备派征虏将军张飞为巴西郡太守,抗击张郃。
张郃率军进至宕渠,与张飞相拒五十余日,张飞率精兵万余人从小道进攻张郃。
由于山道狭窄,首尾不能相救,张郃大败,仅带十余人弃马爬山逃跑,之后收拢败兵,撤回南郑。
原来的荡寇将军张辽因为威震逍遥津而升迁为征东将军,于是,张郃补位此职,被拜为荡寇将军。
建安二十三年,刘备进攻汉中,屯于阳平,夏侯渊、张郃、徐晃等率军迎击,张郃负责防守广石。
建安二十四年,刘备亲自率精兵万余人,分为十部,夜间猛攻张郃。
张郃率亲兵与蜀军进行对抗,刘备不能攻克张郃,写信要求益州拨发援兵,诸葛亮一时迟疑不决,从事杨洪劝道:
“汉中是益州门户,没有汉中就没有益州,还迟疑什么?”
诸葛亮恍然大悟,立刻发兵增援,其后,刘备趁夜放火烧掉曹军营外的鹿角。
夏侯渊派遣张郃去修复南围鹿角,自己亲自率轻装士兵去修复东围鹿角,刘备进攻张郃,张郃的军队作战不利。
因此,夏侯渊把东围鹿角的一半兵马派去救助张郃,刘备的军队趁机进攻东围鹿角,夏侯渊被蜀军所杀。
曹军大败,张郃同败军一起退守阳平关东,而当刘备听闻夏侯渊被斩杀,只说:“要杀就杀张郃,杀夏侯渊有什么用!”
司马郭淮和督军杜袭收敛散卒,郭淮见状,便说:
“张将军是国家的名将,刘备也忌惮他,现在形势紧迫,只有张将军才能安定军心。”
于是众人推举张郃出任主帅,指挥士兵,布置营寨,军心安定,不久,曹操遣使令张郃假节。
刘备欲渡汉水来攻,见魏军在汉水以北列阵相迎,刘备于是放弃渡河,隔水相持。
曹操亲自进攻汉中,不能取胜,于是撤出汉中的部队,令张郃屯兵于陈仓。
延康元年,曹丕即魏王位后,任命张郃为左将军,进封都乡侯爵位。
等到曹丕登基之后,又进封他为鄚侯,命令张郃与曹真率领兵马征伐盘踞在安定一带的卢水胡人和东部羌人。
战斗结束后,曹丕又在许昌宫召见了张郃、曹真,派张郃南下与夏侯尚一起进攻东吴政权的江夏郡。
张郃独自率领几路大军渡过长江,夺取了百里洲的吴军堡垒。
曹叡即位后,派张郃来到南方,驻扎荆州,和司马懿一起进攻孙权的部将刘阿等人,大军来到祁口,与吴军激战,打败了刘阿所部。
太和二年,蜀汉丞相诸葛亮大举北犯,天水、南安、安定三郡吏民叛应诸葛亮,当时朝臣未知计所出,曹叡自信地说:
“诸葛亮恃险固守,不易进攻,
现在他自动来了,正符合引出敌人的战术,打败诸葛亮是一定的了。”
于是曹叡给张郃加官特进,让他总督各路军马,在街亭阻挡诸葛亮的部将马谡。
马谡依傍险要的南山扎寨,没有下山占据城池,张郃断绝了他取水的道路,然后发起进攻,大败马谡。
南安、天水、安定各郡反叛魏国响应诸葛亮,张郃领兵平定了这几处地方,曹叡下诏说: