张合,字俊乂,是河间郡鄚县人。汉末时期,他响应招募去讨伐黄巾军,当了军司马,隶属于韩馥。韩馥失败后,张合带着部队投奔了袁绍。袁绍任命他为校尉,派他去抵挡公孙瓒。公孙瓒被打败后,张合立了大功,被提升为宁国中郎将。
曹操和袁绍在官渡对峙的时候,张合曾劝袁绍说:“曹操的军队很精锐,如果去攻打淳于琼他们,一定会打败他们。如果淳于琼他们被打败了,我们的大事就完了。我们应该赶快派兵去救他们。”但郭图却说:“张合的计策不对。不如去攻打曹操的大营,曹操一定会回来救援,这样就不用去救淳于琼,问题也能解决了。”张合说:“曹操的大营很坚固,攻打是攻不下来的。如果淳于琼他们被抓住了,我们都会成为俘虏。”但袁绍只派了轻骑兵去救淳于琼,却用重兵去攻打曹操的大营,结果也没攻下来。曹操果然打败了淳于琼,袁绍的军队一下子就溃败了。
郭图很惭愧,但他不但不承认自己的错误,反而在袁绍面前诋毁张合,说:“张合对我们的失败很高兴,还说了一些不恭敬的话。”张合听说后很害怕,就投降了曹操。裴松之认为,《武纪》和《袁绍传》都说袁绍派张合、高览去攻打曹操的大营,他们听说淳于琼被打败后,就投降了曹操,袁绍的军队这才溃败的。这样一来,就变成了因为张合等人投降,袁绍的军队才溃败的。但在这段传记里,却说袁绍的军队先溃败了,张合害怕郭图的诋毁,才投降了曹操,这两种说法互相矛盾,让人搞不清楚到底是怎么回事。
曹操得到张合后非常高兴,对他说:“以前伍子胥没有早点觉悟,结果让自己陷入危险,哪里比得上微子离开商朝、韩信归顺汉朝呢?”接着,曹操任命张合为偏将军,封他为都亭侯,还给了他军队,让他跟着自己去攻打邺城,最后成功拿下了邺城。之后,张合又跟着曹操去渤海攻打袁谭,还单独带领军队围攻雍奴,大获全胜。他跟着曹操去讨伐柳城的时候,和张辽一起担任先锋,因为立了功,被提升为平狄将军。后来,张合单独去征讨东莱,攻打管承,又和张辽一起去讨伐陈兰、梅成等人,把他们都打败了。他还跟着曹操在渭南打败了马超和韩遂,围攻安定,让杨秋投降。接着,他和夏侯渊一起去讨伐鄜县的贼寇梁兴以及武都的氐族人。后来又打败了马超,平定了宋建。
曹操去征讨张鲁的时候,先派张合带领各军去讨伐梁兴和氐族王窦茂。曹操从散关进入汉中后,又先派张合带领五千名步兵在前面开路。到了阳平,张鲁投降了,曹操就回去了,留下张合和夏侯渊等人守卫汉中,抵挡刘备。张合单独带领各军,让巴东、巴西两个郡投降,把那里的百姓都迁到了汉中。接着,他进军宕渠,结果被刘备的将领张飞给挡住了,只好退回南郑。因为这次战功,张合被任命为荡寇将军。
刘备驻扎在阳平,张合驻扎在广石。刘备用一万多名精锐士兵,分成十个部分,趁夜猛攻张合。张合带着亲兵奋力抵抗,刘备没能攻下来。后来,刘备在走马谷烧了曹军的包围圈,夏侯渊去救火,从另一条路和刘备的军队相遇,双方展开了激烈的战斗,短兵相接。结果,夏侯渊战死了,张合退回了阳平。《魏略》里说,虽然夏侯渊是都督,但刘备害怕张合而轻视夏侯渊。等到夏侯渊被杀后,刘备说:“我本来是想抓张合这个头目,抓夏侯渊有什么用呢!”
当时,刚刚失去了主将,大家都很害怕刘备会趁机进攻,三军上下都惊慌失措。夏侯渊的司马郭淮就对大家说:“张将军是国家的名将,刘备也害怕他。现在事情紧急,除了张将军,没有人能让大家安心。”于是,大家推举张合当了军主。张合出来后,整顿军队,安排好阵势,其他将领都听从他的指挥,大家的心才安定下来。曹操当时在长安,听说后就派使者给了张合节钺。接着,曹操亲自来到汉中,刘备坚守在高山之上,不敢迎战。曹操就带着汉中的军队撤退了,张合也回到了陈仓驻扎。
曹丕(文帝)继承王位后,任命张合为左将军,提升他的爵位为都乡侯。等到曹丕正式登基后,又进一步封他为鄚侯。曹丕下诏让张合和曹真去讨伐安定的卢水胡人和东羌,还召见张合和曹真到许宫,派他们南下和夏侯尚一起攻打江陵。张合单独带领各军渡过长江,夺取了江中的据点。
曹叡(明帝)即位后,派张合到荆州南部驻扎,和司马懿一起攻打孙权的将领刘阿等人,一直追到祁口,和敌人交战,打败了他们。
诸葛亮出兵祁山的时候,张合被提升为特进,被派去统领各军,在街亭抵挡诸葛亮的将领马谡。马谡依靠南山的地形,没有下来占据城池。张合切断了他的水源,然后发起攻击,大败马谡。南安、天水、安定三个郡都响应诸葛亮,张合把他们都平定了。曹叡下诏说:“诸葛亮带着巴蜀的军队,来对抗我们如虎狼般的军队。将军你披上坚固的铠甲,拿着锋利的武器,所向披靡,我非常赞赏你。增加你的封地一千户,加上之前的总共四千三百户。”
司马懿在荆州训练水军,打算顺着沔水进入长江去讨伐孙权。曹叡下诏让张合统领关中的各军,去接受司马懿的指挥。张合到了荆州后,正赶上冬天水浅,大船没法行驶,就回去了,驻扎在方城。
诸葛亮又出兵了,他急攻陈仓。曹叡用驿马把张合召到京都。曹叡亲自到河南城,摆下酒席为张合送行,还派了三万名南北军士兵和一些武卫、虎贲武士来保卫张合。曹叡问张合:“等将军你到了,诸葛亮是不是已经拿下陈仓了?”张合知道诸葛亮的军队没有粮食,不能久攻,就说:“等我还没到,诸葛亮就已经走了。我算了一下,诸葛亮的粮食撑不到十天。”张合日夜兼程赶到南郑的时候,诸葛亮果然退兵了。
曹叡下诏让张合回到京都,任命他为征西车骑将军。张合善于识别变化,善于布置阵营,能够根据地形判断战势,每次都能如他所料,连诸葛亮都害怕他。张合虽然是武将,但很喜欢儒士。他曾经推荐同乡卑湛,说他精通经典,品行很好。曹叡下诏说:“以前祭遵当将军的时候,还上奏设置五经大夫,在军中和儒生们一起吟诗、玩投壶游戏。现在将军你在外统领军队,在内关心朝廷。我很赞赏你的意思,现在就提升卑湛为博士。”
诸葛亮再次出兵祁山,曹叡下诏命令张合统领各将领向西到达略阳。诸葛亮退回并坚守祁山,张合追击到木门,与诸葛亮的军队交战。在战斗中,张合被飞箭射中右膝,不幸身亡。《魏略》中提到,诸葛亮的军队撤退时,司马懿命令张合追击。张合表示:“按照军法,围攻城池必须留出一条生路,对于撤退的军队不要追击。”但司马懿没有听从。张合无奈之下,只能前进。蜀军利用高地伏击,弓弩齐发,箭矢射中了张合的大腿。
张合被追封为壮侯,他的儿子张雄继承了他的爵位。张合在历次征伐中屡立战功,曹叡为了表彰他的功绩,分出一部分封户,封张合的四个儿子为列侯,并赐给他的小儿子关内侯的爵位。