刘璋为刘焉幼子。母费氏,是后来娶了刘璋女儿的费观的族姑。中平五年(188年),刘焉向汉灵帝建言设立州牧总管各地军政大权,自己出任益州牧,而刘璋与兄长刘范、刘诞都留在京城,只有刘瑁随刘焉入蜀。刘璋后来出任奉车都尉,受朝廷派遣诏谕刘焉,刘焉就把他留下不再返回朝中。194年,刘范在长安与马腾密谋进攻权臣李傕,泄露之后与刘诞一起被杀,而刘璋则得以幸免。刘焉的世交议郎庞羲保护刘焉的几个孙子,送入益州。刘焉因为逝子之痛,又逢绵竹城中大火,不得已迁治成都,背疽发作逝世。
刘焉死后,益州官吏赵韪等希望利用刘璋温仁,于是上书推举他继掌益州刺史,得朝廷诏为益州牧。将领沈弥、娄发、甘宁起事反对刘璋,被赵韪打败后奔荆州。建安五年(200年),被刘璋派遣屯兵防御刘表的赵韪反动叛乱,蜀地多处响应,幸得刘焉之前收容荆州、三辅流民建立的“东州兵”拼力死战,才平息了叛乱,杀赵韪于江州。
刘璋为人懦弱,原本依附于刘焉的汉中张鲁骄纵,不听刘璋号令,于是刘璋杀张鲁母弟,双方成为仇敌,刘璋派庞羲攻击张鲁,战败。
此后又有曹操将前来袭击的消息。在内外交逼之下,刘璋听信手下张松、法正之言,迎接刘备入益州,想藉刘备之力,抵抗张鲁、曹操。不料此举乃引狼入室,刘备不久借故攻击刘璋,法正又为刘备内应,刘璋麾下两名将军杨怀、高沛被刘备所杀。
双方战争历时两年左右,期间刘璋军杀死了刘备军军师庞统,使得刘备陷入苦战。后来诸葛亮、张飞、赵云三路援军由荆州支援刘备,并成功将刘璋围困成都内,并派简雍劝降刘璋。
当时成都尚有精兵三万,钱粮可以支撑一年,军民都主张死战,刘璋说:“父子在州二十余年,无恩德以加百姓。百姓攻战三年,肌膏草野者,以璋故也,何心能安!”然后陪同简雍开城投降。开城之时,城中之人莫不流泪。刘备把刘璋迁至公安,并将财物归还于他,再佩振威将军印信。
后来孙权杀关羽,得荆州,以刘璋为益州牧,驻于秭归,但是不久病死。