建安十九年, 西元214年, 劉備率軍將成都團團包圍, 向益州劉璋發起了最後的猛攻。 引劉備入蜀或許是劉璋這一生最後悔的決定, 可是被圍在城中的劉璋也並不是毫無抵抗力量, 在他手下還有著三萬的精兵, 以及足夠的糧食, 可是為了城中的百姓的著想, 劉璋最終向劉備投降, 獻出了自己經營多年的這一地盤。
由於劉璋選擇了投降, 事後劉備也沒有將其殺害, 而是派他到公安為官, 並且給了他許多的財物, 仍然封他做振威將軍。 公安是當時荊州的一個縣, 遠離益州, 雖然劉璋被封將軍, 可是有名無權, 相當於被劉備軟禁在了那裡。
不過六年後, 到了西元220年, 劉璋的命運又發生了一次轉折。 此時, 孫權派兵攻下了關羽鎮守的荊州, 在公安居住的劉璋也就落到了孫權的軍中。 考慮到劉璋是益州舊主, 孫權對他也是禮遇有加, 並且封他做了益州牧, 駐紮在秭歸。
孫權的這一舉動無非是希望利用劉璋的身份, 幫助他日後繼續向劉備進攻提供名分上的支持。 可惜的是, 不久之後, 劉璋就患病而亡, 孫權的這一打算也告終結, 等待孫權的, 則是不久後劉備的數十萬復仇大軍