郭圖因為自己的計謀失敗而感到慚愧,於是誣陷道:

"張郃對我軍的失敗感到高興,並且出言不遜。"

張郃等將領懼怕被追究,於是燒掉了攻城櫓,投降了曹操,曹操對張郃的投降感到高興,親自迎接並稱"如微子去殷,韓信歸漢也",並將張郃拜為偏將軍、封為都亭侯。

後來張郃頗受曹操重用,交給其部隊,讓他跟隨自己攻打鄴城,佔領了鄴城。

張郃又跟隨曹操到渤海攻打袁譚,他單獨率軍包圍了雍奴,擊潰了**。

隨同曹操征討柳城的時候,張郃和張遼擔任先鋒,在白狼山之戰中,受張遼指揮,大破烏桓,斬蹋頓及名王以下十餘人,俘虜二十餘萬人,最終討平烏桓,徹底剷除袁氏殘餘,張郃因為屢立戰功升任平狄將軍。

張郃還領兵征討東萊郡,討伐管承,後來,張郃與牛蓋等人受到張遼的督領,一起討伐**、梅成等人,在天柱山之戰中大獲全勝。

張郃跟隨曹操到渭南,擊潰了馬超、韓遂等,又包圍了安定,楊秋投降。

張郃、夏侯淵一起征討盤踞在鄜城的賊寇梁興和武都一帶的氐族叛軍,再次擊敗了馬超的部隊,平定了宋建統治的地區。

建安二十年,曹操西征張魯,抵達陳倉,準備從武都郡進入氐族部落,氐族人擋住道路,曹操派張郃統帥大軍討伐梁興和氐族首領竇茂所部。

不久從散關入漢中,派張郃率五千步兵在前開道,一直到陽平,張魯投降,曹操回軍,留張郃與夏侯淵、徐晃等守漢中,以拒劉備。

同年,張郃別督諸軍南下進攻巴東、巴西二郡,將當地百姓遷徙到漢中,劉備派徵虜將軍張飛為巴西郡太守,抗擊張郃。

張郃率軍進至宕渠,與張飛相拒五十餘日,張飛率精兵萬餘人從小道進攻張郃。

由於山道狹窄,首尾不能相救,張郃大敗,僅帶十餘人棄馬爬山逃跑,之後收攏敗兵,撤回南鄭。

原來的蕩寇將軍張遼因為威震逍遙津而升遷為徵東將軍,於是,張郃補位此職,被拜為蕩寇將軍。

建安二十三年,劉備進攻漢中,屯於陽平,夏侯淵、張郃、徐晃等率軍迎擊,張郃負責防守廣石。

建安二十四年,劉備親自率精兵萬餘人,分為十部,夜間猛攻張郃。

張郃率親兵與蜀軍進行對抗,劉備不能攻克張郃,寫信要求益州撥發援兵,諸葛亮一時遲疑不決,從事楊洪勸道:

"漢中是益州門戶,沒有漢中就沒有益州,還遲疑什麼?"

諸葛亮恍然大悟,立刻發兵增援,其後,劉備趁夜放火燒掉**營外的鹿角。

夏侯淵派遣張郃去修復南圍鹿角,自己親自率輕裝士兵去修復東圍鹿角,劉備進攻張郃,張郃的軍隊作戰不利。

因此,夏侯淵把東圍鹿角的一半兵馬派去救助張郃,劉備的軍隊趁機進攻東圍鹿角,夏侯淵被蜀軍所殺。

**大敗,張郃同敗軍一起退守陽平關東,而當劉備聽聞夏侯淵被斬殺,只說:"要殺就殺張郃,殺夏侯淵有什麼用!"

司馬郭淮和督軍杜襲收斂散卒,郭淮見狀,便說:

"張將軍是國家的名將,劉備也忌憚他,現在形勢緊迫,只有張將軍才能安定軍心。"