建安十八年(213),张飞奉命同诸葛亮、赵云沿长江而上,入川增援刘备,夺取益州。途经巴州(今重庆江北区),他领兵攻克之,生擒刘璋巴郡太守严颜。张飞呵斥道:“我大军驾到,何以不早降而敢抗拒对战?”严颜义正词严回答说:“尔等不仁,侵夺我州土地,我州只有断头将军,无有降将军!”张飞大怒,令左右推出斩首,严颜面不改色,泰然自若,说:“砍头便砍头,何必如此恼怒!”张飞见状,十分佩服严颜的忠义和胆气,便亲自为他解去绳索,待为座上宾客。然后,张飞率军继续推进,沿途攻城陷郡,攻无不克,战无不胜,与刘备会师于成都。刘备据有成都后,张飞为巴西太守,驻阆中(今四川阆中)。
建安二十年(215),曹操攻占汉中,留大将夏侯渊与张郃镇守。二人常常领兵入川侵犯。一次,张郃督军下巴西,欲抢掠百姓以归汉中,张飞率军相拒。两军在宕渠(今四川渠县)相持五十余日,不分胜负。张飞便运用计谋出奇兵,率精兵万人从另一条路绕至张郃军后击之。张郃军因在狭窄的山道中,前后不能相救援,被张飞各个击破。张郃大败,只得弃马沿山与十余人狼狈从小道逃走,领军龟缩回南郑(今陕西汉中南郑区),再也不敢出来。从此,巴西一带获得安宁。
建安二十二年(217),刘备领兵争汉中,同时派张飞、马超、吴兰等入陇右,屯下辨(今甘肃成县),以争武都郡,曹操即遣曹洪相拒。“张飞屯固山,欲断军后”(《三国志·曹洪传》)。张飞欲抄袭曹军之后,但曹洪伏兵潜行,击破吴兰,使张飞军失去呼应之势,张飞只得领兵退回汉中。后刘备为汉中王,“拜张飞为右将军,假节”。刘备即帝位,张飞又迁车骑将军,领司隶校尉,进封西乡侯。