张杨早年时因为武勇过人被并州刺史丁原任命为武猛从事。汉灵帝末年,天下大乱,汉灵帝以所宠小黄门蹇硕为西园上军校尉,蹇硕在京都统领军队,想要统率四方,于是大肆征召天下豪杰用为自己的偏将,当时袁绍和曹操都被征为校尉跟随蹇硕,而丁原则派遣张杨率领士兵去蹇硕那里去,蹇硕让张杨暂行军司马。
中平六年(189年),汉灵帝驾崩,蹇硕被大将军何进所杀,何进派遣张杨回并州召集兵马,留在上党,并平定了上党的山贼之乱。但何进不久之后就被宦官张让等诛杀,董卓趁机进京,掌握朝中大权,无恶不作。于是张杨率兵进攻上党太守于壶关,但未能攻下,于是张杨率所领寇略诸县,队伍发展到几千人。初平元年(190年),张杨率军参加,山东诸侯组成以袁绍为首的讨董联盟军。张杨于河内与袁绍军回合,后与匈奴单于於夫罗屯于漳水,於夫罗想要叛变,但是袁绍和张杨都不肯相从,于是於夫罗挟持张杨奔走,袁绍派遣大将麹义进行追击,在邺城南部大破於夫罗军。於夫罗挟持张杨逃到黎阳,攻破度辽将军耿祉军,张杨得以东山再起,于是董卓诏封张杨为建义将军、河内太守。初平三年(192年),曹操遣从事王必从兖州出使长安朝见汉献帝,途径河内时被张杨拦阻,董昭告诉张杨“袁绍、曹操虽是同盟关系,但看情况,是不可能长期联合下去的。曹操眼下虽然弱小,但却不愧是一个英雄,应当找机会同他结交。何况现在机会就摆在眼前,应当加以利用,帮助曹操同朝廷接上关系,并上表推荐他。如果事情办好了,曹操是不会忘记您的好处的。”张杨听后觉得有理,就立刻照办了。曹操得知情况后,对张杨果然十分感谢,特地给张杨送去犬马金帛,张杨也派使者拜见曹操。
初平四年(193年),吕布被赶出长安后,投奔南阳袁术,袁术因吕布胡作非为而欲除之,吕布因害怕而投奔了张杨。当时李傕郭汜悬赏捉拿吕布,张杨部下都想杀掉吕布。吕布听说后,对张杨说:“我和你是同州人,你若杀了我对你并没有什么好处,不如把我活着交给李、郭二人,这样你也可以获得李、郭的恩宠。”张杨认为有道理。于是表面上答应李榷郭汜,实际上保护着吕布不受伤害。然而吕布却信以为真,不久便投靠了袁绍。 兴平元年(194年),袁绍暗使人杀掉吕布,吕布从袁绍处逃出后再次投奔了张杨。
兴平二年(195年),汉献帝因为李傕、郭汜作乱而流亡至河东,张杨率兵前往安邑救援。百官都很饥饿,张杨使数千人背着米提供食物。被拜为安国将军,假节、开府,封晋阳侯。当时张杨想把汉献帝迎回洛阳,但是诸将不肯从,于是张杨回到野王。
建安元年(196年),杨奉、董承、韩暹携带汉献帝回洛阳,没有粮食吃,张杨于是携带粮食于回洛阳的路上迎接汉献帝,和汉献帝一起回到洛阳。起初,诸将争权,韩暹攻打董承,董承投奔张杨,张杨令董承先修缮洛阳宫室。七月,汉献帝回到东都洛阳,住进了杨安殿。张杨认为护驾是自己的功劳,于是以“杨”命名这座宫殿。后张杨对诸将说:“天子应该是和天下人一起的,现在天子有各位公卿大臣的辅佐,我可以在外捍卫大汉朝,怎么可以留在京都呢?”于是张杨又回到了野王。即刻拜为大司马、假节钺。后值韩暹擅权弄国,董承秘密召兖州牧曹操入宫勤王。曹操入宫后弹劾韩暹与张杨之罪,汉献帝因韩暹张杨有护驾之功,让所有人不要再提这件事。
建安三年(198年),曹操围吕布于下邳,张杨与吕布的关系向来比较好,想要去救援,却失败了,于是率军前往东市,遥与吕布成掎角之势。张杨部下杨丑,将张杨暗杀,欲投靠曹操。而眭固又杀了杨丑,带领张杨部下屯军射犬。欲投奔袁绍。曹操因为见形势不利,为免夜长梦多,派遣史涣、曹仁急攻眭固。眭固自领亲兵出奔袁绍,于犬城被史涣等截击被斩,曹操再围射犬,众人皆降。曹操因此吞并河内。