東漢末年,天下紛爭四起,黃巾起義席卷天下,張郃應征參加了征討黃巾軍的冀州牧韓馥的部隊,並在韓馥手下做了司馬軍官。後來北方袁紹勢力逐漸強大,張郃又隨韓馥一起歸附了袁紹,並被任為校尉。張郃在袁紹手下很快鋒芒畢露,顯露出大將的才華,在攻打公孫瓚的戰鬥中,他輕鬆地取得了勝利,被袁紹提升為中郎將。然而,袁紹並非那種具有雄才偉略的開創者,他目光短淺,又不能知人善任,這注定了他不能和曹操這樣的一代梟雄共爭天下。208年,袁紹與曹操兵馬相持於官渡,袁紹將駐守屯糧重地烏巢的重任交給了一名平庸的小官淳於瓊。曹操急欲結束戰鬥,便親自帶精兵迅速地撲向袁紹的糧食基地烏巢,準備斷了袁紹的糧草。張郃立刻提出:曹操兵精,攻打淳於瓊必勝,一旦烏巢破,那後果可想而知,應該立即引兵救之。袁紹的一名謀士郭圖為了表現自己卻提出相反意見,認為隻要出兵攻打曹操大本營,即可不戰而解烏巢之圍。張郃深知糧草之重要,他據理力爭地說:“曹操親率兵打烏巢,大本營定有重兵把守,我們若去攻打,很可能久攻不下。如果淳於瓊被抓,我軍就全成俘虜了,不如派輕騎人馬密絕其南,曹軍必敗。”但袁紹還是聽信了郭圖的話,用重兵攻打曹營,果然遇到強大的反擊,而去救烏巢的人馬如同杯水車薪,一同被曹操殲滅,糧食基地沒了,袁軍軍心不穩,曹操又一鼓作氣,乘勝攻擊,袁軍頓時潰不成軍。此役大敗,郭圖自知其責難當,又擔心袁紹以後會信任張郃而疏遠自己,所以就搶先誣陷張郃,袁紹很生氣。張郃聞知此事,擔心被袁紹加害,於是連夜帶兵投奔曹操,並與曹操反戈一擊,袁紹徹底失敗。
曹操得到張郃異常高興,他將張郃的投奔比作微子離商、韓信歸漢一般,遂命張郃為偏將軍,封都亭侯,並委以大任,指揮眾軍。
張郃深感遇到明主,為報答曹操的知遇之恩。從此死心塌地跟隨曹操,效忠魏國。他先是於進攻鄹城時立功;後兵出渤海,進攻袁譚,又率兵奪取雍奴;曹操兵進柳城,追擊袁尚、袁熙,他又和張遼一起衝鋒在前,因功被提升為平狄將軍。此後張郃又屢建功勳,討平東萊管承;和張遼共同鎮壓了陳蘭、梅成;曹操和馬超、韓遂在渭南大戰時,又包圍安定,招降楊秋。真可謂身負重任,為曹操平定內亂,統一中原立下了汗馬功勞。
215年,曹操平定漢中、收服張魯之後,留張郃與夏侯淵等人鎮守漢中,抗拒劉備。張郃並未隻知防守,而是積極主動出擊,他率領一部分軍隊占領了巴東(今四川奉節東)、巴西(今四川閬中)二郡,並將當地的民眾遷到漢中。但是進軍到了宕渠(今四川渠縣東)時,被劉備手下大將張飛擊敗,領兵退回南鄭。
217年,劉備為奪取漢中,親自領兵駐紮陽平關,張郃領兵在廣石與他對抗。劉備率領精銳部隊1萬多人,分為10部,趁黑夜輪翻疾攻張郃。張郃率領眾將士拚死抵抗,最終使得劉備未能前進一步。
219年,劉備在走馬穀燒掉夏侯淵營盤周圍用來防守的鹿角。夏侯淵率兵救火,雙方在路上相遇,於是發生激戰,夏侯淵被黃忠殺死,張郃獨立難支,才不得不放棄防守,退兵守陽平。夏侯淵本為鎮守漢中的強大力量,現在被劉備斬殺,軍中一時無主將,眾將士們人心惶惶。這時夏侯淵部下的司馬郭淮向大家提議說:“張郃將軍是國家的名將,劉備也懼怕三分;現在事情緊迫,除了張郃將軍主持大局外是無法安定軍心的。”於是推張郃為軍中主帥。張郃擔任主將之後,立即著手整頓軍務,加固城防,有條不紊地安排人員派遣、兵力部置等一切軍中事務。眾將見他謀劃指揮都是那麼井然有序,軍心很快被穩定下來,防止了進一步的潰敗。張郃這次臨危勇擔大任,膽識著實過人。曹操在長安,專程派人為他送來大帥的麾節。
勇取街亭身死西蜀
曹丕即王位後,張郃被提升為左將軍,晉爵為都鄉侯。稱帝之後,又進封為鄚侯。曹丕也把張郃看作是不可多得的將才,因此屢委以重任。張郃也確實做到了不辱使命,他與曹真鎮壓了安定盧水胡人及東羌的叛亂後,曹丕還特意在許宮召見他們。此後,張郃又被派往南方與夏侯尚出擊江陵。魏明帝曹即位之後,對已是三朝元老的張郃更加的倚重,讓他協助司馬懿對抗東吳孫權和西蜀諸葛亮。
太和二年(228),諸葛亮出兵祁山進攻魏國。張郃被封為特進,統率軍隊去抗擊諸葛亮的部將馬謖。張郃雖已年老,但作戰依然不含糊。他見馬謖舍街亭城池,而跑到南山上駐紮。就派人截斷馬謖軍隊下山取水的汲道,使敵人不戰自亂。然後再率軍攻打,將馬謖殺得大敗,諸葛亮也隻得黯然退兵。接著,張郃又乘勝追擊,平定了南安、天水、安定等郡響應諸葛亮而反叛的軍隊。曹叡見他功勳卓著,特意下詔進行嘉獎。