永和二年(346年)十一月,桓温上疏朝廷,请求伐蜀,但未等朝廷回复,便与征虏将军周抚、辅国将军司马无忌率军西进。他命袁乔率二千人为前锋。朝廷得知后,忧虑不已,认为他兵力过少,又深入险要偏远的蜀地,担心他最终会兵败而回。唯有刘惔认为桓温必能灭蜀。
永和三年(347年)二月,桓温兵至青衣(今四川名山北)。李势命将领李福、昝坚率大军赶赴合水,以抵御晋军。汉军诸将欲在江南设伏,昝坚却从江北鸳鸯琦渡江,向犍为(今四川彭山东)开进,结果与晋军异道而行。同年三月,桓温兵至彭模(今四川彭山东南),留下参军周楚、孙盛看守辎重,自己亲率步兵直趋成都。李福回军袭击彭模,被孙盛等人击退。而桓温则三战三胜,击败李权等部汉军,进逼至成都城下。
昝坚赶到犍为,未遇晋军,便从沙头津(今四川新津南)渡江还军,却得知晋军已攻至成都城外十里陌,因此不战自溃。李势只得集结所有兵力,在成都城外的笮桥与晋军决战。当时战况惨烈,晋军前锋失利,参军龚护战死,汉军的箭矢甚至射到了桓温的马前。诸将皆惧,意欲退兵,而鼓吏却在这时误击前进鼓。袁乔乘势督促军士奋战,终于反败为胜,大败汉军。桓温趁胜攻入成都,并焚毁小城。李势乘夜逃走,远遁九十里,最终决定投降。桓温接受投降,将李势送往建康。成汉政权至此灭亡。
桓温平蜀后,在当地举任贤能,援引贤才为己用,将成汉旧臣王誓、王瑜、邓定、常璩等人辟为参军,成功安抚蜀地。但王誓、邓定不久便举兵叛乱,最终都被晋军讨平。桓温在蜀地留驻一个月,便班师返回江陵(今湖北江陵)。
永和四年(348年),朝廷封赏平蜀之功,欲封桓温为豫章郡公,却被尚书左丞荀蕤劝止。最终,桓温被封为征西大将军、开府仪同三司、临贺郡公。
逼废殷浩
平蜀之战使得桓温声名大振,朝廷忌惮不已,担心他日后难以控制。会稽王司马昱只得让扬州刺史殷浩参与朝政,以期能对桓温有所抑制。桓温虽有不满,但因熟知殷浩为人,知其难有作为,对此并不担心。当时,桓温治下有八州之地,自行招募军卒、调配资源,逐渐形成半独立状态,渐露不臣之心。朝廷对他已不能征调如意,但求羁縻而已。因国中无事,君臣尚能相安。