刘焉为西汉鲁恭王刘馀之后裔,汉章帝元和(84年-87年)年间,刘馀一支徙封竟陵。
刘焉年轻时在州郡任职,因为宗室身份而被授予郎中一职。延熹三年(160年),因老师祝恬(汉桓帝时司徒)去世而离职,在阳城山讲学教授。后被推举为贤良方正,被司徒府征辟。历任雒阳县令、冀州刺史、南阳郡太守、宗正、太常等官。
中平五年(188年),刘焉目睹汉灵帝治下朝纲混乱、王室衰微的状况,故而向朝廷建议说:“刺史、太守行贿买官,盘剥百姓,招致众叛亲离。应该挑选那些清廉的朝中要员去担任地方州郡长官,借以镇守安定天下。”他本人自请充任交州牧,意欲借此躲避世乱。
当时,益州刺史郤俭在益州大肆聚敛,贪婪成风。本来想领交州避祸的刘焉因为听侍中董扶说益州有天子之气,改向朝廷请求为益州牧。
于是以刘焉为监军使者、益州牧,被封为阳城侯,命其前往益州逮捕郗俭,整饬吏治。因为道路不通,刘焉暂驻在荆州东界。
此时郤俭已被黄巾军首领马相等杀死,但是刚称帝的几日的马相又被益州从事贾龙组织军队击败。贾龙于是迎接刘焉入益州,治所定在绵竹县。
刘焉上任后,任命贾龙为校尉,将他迁到绵竹居住。刘焉安抚收容逃跑反叛的人,极力实行宽容恩惠的政策,但内心别有图谋。
“五斗米道”首领张鲁的母亲长相美丽,加上懂得神鬼邪说,和刘焉家有往来,刘焉就任命张鲁为督义司马,与别部司马张修一起进攻汉中郡,杀汉中太守苏固。
张鲁在汉中得势后,却杀死张修,截断交通,斩杀汉使,刘张两家由此结怨。
刘焉则以“米贼”作乱阻隔交通为由,从此中断与中央朝廷的联络。他进一步对内打击地方豪强,巩固自身势力,益州因而处于半独立的状态。
天下诸侯讨伐权臣董卓之时,刘焉也拒不出兵,保州自守。犍为郡太守任岐及之前平乱有功的贾龙在司徒赵谦的游说下起兵反对刘焉,赵谦又奉命率军进益州,但是因贾龙等被刘焉击杀,于是撤军。
中原大乱之下,南阳、三辅一带有数万户流民进入益州,刘焉悉数收编,称为“东州兵”。这支军力在刘璋继任后,虽然侵暴百姓并引起了不少民患,甚至有一部分参与了反叛,但是也成为平定赵韪内乱的决定性力量。
初平二年(191年),刘焉更造作乘舆车具(天子所用的车架)千余辆,欲称帝。荆州牧刘表上言朝廷,称刘焉“有似子夏在西河疑圣人之论(意指其图谋不轨)”,由此,两人结怨,荆州、益州两州遂短暂断绝交通。
此后,刘焉称病,让朝廷将其子奉车都尉刘璋从京城派到益州,因为刘璋非刘焉长子,仅仅是刘焉第四子,朝廷同意,刘焉趁机将其留下。
至此,刘焉培植亲信,逐渐加强对益州的控制,益州基本上属于半独立的王国(只是名义上没有宣布称帝独立)。