公元211年,曹操要去攻张鲁(东汉末割据军阀、五斗米道第三代天师,雄踞汉中三十年)。消息传到益州,刘璋手下的张松就对刘璋说:“汉中是巴蜀的门户。假如曹操占据了汉中,巴蜀就都危险了。而且蜀中诸将,像庞羲、李异等,都是靠不住的。刘备是你的同宗,善于用兵,又和曹操是冤家,不如招他来防守益州,曹操就不足虑了。”刘璋颇以为然,就派了法正,去迎接刘备。张鲁素来骄纵,不听刘璋号令,刘璋曾杀张鲁母弟,双方乃为仇敌。把汉中送给刘备,刘璋自己是不吃亏的。
刘备听了这个消息,正中下怀,便随法正入川。刘璋自到涪县(今四川绵阳县)和他相见,给了他许多兵马,还给了许多粮饷财帛,让他镇守白水关(在四川昭化县西北)。
曹操本来准备进攻张鲁,还没有进兵,西北凉州军阀韩遂、马超等人反叛了。曹操亲自西征,虽然把他们打败,然而进攻张鲁之事,却亦因此而未能实行。
公元212年,曹操又自己带兵去攻孙权。刘备就对刘璋说,孙权差人来求救,我和他本来是互相唇齿的,不得不去救。请刘璋再借一万名兵和军资器械,想要东还。刘璋给了他四千名兵,其余的东西都减半发给。张松听到这个消息,着急了,写信给刘备说,大事垂成,何可舍之而去?张松的哥哥张肃见他如此私通外敌,怕他连累于己,便把他举发了。刘璋便收斩张松,发命令给各关的守将,叫他们不得再和刘备往来。