建武十一年(公元35年),光武帝刘秀劝公孙述归属不成便决心命吴汉带兵前去征讨。十二月,吴汉从夷陵率领三万人马,沿长江逆流而上,一路上把公孙述的将领打得落荒而逃。第二年开春,刘秀下令,让吴汉直接夺取广都,占据敌人的腹心地带。吴汉进军,攻破了广都,还派轻锐骑兵烧毁了成都市桥。
公孙述的将领们非常害怕,白天夜里都有逃离或叛变的。尽管公孙述诛杀了这些人全家,但还是不能禁止。
刘秀一定要公孙述投降,又下诏对公孙述说:“现在投降还来得及,也能保全宗族。这样的诏书和手书,让你得到机会不多了。”公孙述始终没有投降的意思。
刘秀告诫吴汉说:“成都有十多万大军,千万不能轻敌。只能坚守广都,等敌人进攻,千万不要与敌人争锋。如果敌人不来进攻,你就转移军营逼迫他们,等敌人筋疲力尽,才可以发起攻击。”
吴汉却率领步兵、骑兵两万人,乘胜进逼成都,在离城十几里的地方,隔着江在北岸扎营,架起浮桥,命副将武威将军刘尚率领一万多人在南岸屯兵,两处军营相距二十多里。
刘秀听说后,大为震惊,责备吴汉说:“我不久前才告诫你,怎么能事到临头自己乱来!你既然轻视敌人,深入敌人腹地,又和刘尚分开扎营,一旦有紧急情况,就不能互相照应了。如果敌人出兵牵制你,用主力攻击刘尚,刘尚失败,你也就失败了。幸好还没有其他变故,赶快带兵返回广都。”
诏书还没送到,九月,公孙述果然派大司徒谢丰、执金吾袁吉率领军队约十万人,分成二十多营,进攻吴汉。另外又派其他将领,率领一万多人牵制刘尚,使他不能救援。吴汉与敌军交战一整天,失利,退回营地。谢丰趁机包围了他们。
汉光武帝刘秀像吴汉召集将领,鼓励他们说:“我和你们大家历尽艰难险阻,转战千里,才深入敌人腹地,进逼城下。可是现在和刘尚被困在两处,不能互相援救,大祸临头,不可估计。我准备悄悄发兵到南岸与刘尚会师,合力抵挡敌军。如果能够齐心协力,大家全都全力奋战,就可以建功立业,否则一定会失败。成败就在此一举了!”
将领们都说:“好!”
于是犒劳士兵,喂饱战马,关闭营门三天,不出去交战。又竖起很多旌旗,不让烟火中断。等到夜里,吴汉悄悄率领军队,与刘尚会合。
谢丰等人没有发觉,第二天兵分两路,一路据守江北,谢丰自己率领另一路,进攻南岸的刘尚。
吴汉派出所有的军队迎战,从早晨战到下午,终于大败敌军,斩杀了谢丰、袁吉。于是他就回师广都,留下刘尚抵挡公孙述。吴汉把情况报告了刘秀,深深地谴责自己。
刘秀回答说:“你回师广都,最好不过了。公孙述一定不敢绕过刘尚进攻你。他如果先攻打刘尚,你就从广都援救,相隔五十里的路程,出动全部的步兵、骑兵赶去,正是敌军危困的时候,一定可以打败他们!”
此后,吴汉和公孙述在广都和成都之间交战八次,吴汉八次取胜,东汉大军终于进入成都外城。
公孙述窘迫困顿,问延岑说:“该怎么办?”延岑说:“大丈夫应当死里逃生,岂能坐以待毙?财物容易聚敛,不要吝啬。”
公孙述就把所有的黄金、绢帛都散发给大家,招募不怕死的五千多人,分配给延岑。
延岑先在成都市桥布下疑阵,插了很多旌旗,敲响战鼓,向东汉军队挑战。他又悄悄派出奇兵,绕到吴汉军队的后面偷袭,打败了吴汉军队。
吴汉从马上掉到水里,抓着马尾巴才得以脱险。吴汉的军队只剩下七天的粮草,偷偷地准备战船,打算撤退。
蜀郡太守南阳人张堪听说后,赶紧求见吴汉,劝他说,公孙述一定会灭亡,不应该退兵。吴汉听从了他的意见,于是假装力量衰竭,挑动敌人进攻。
十一月,臧宫进驻成都咸阳门。
十八日,公孙述亲自率领几万人进攻吴汉,派延岑抵抗臧宫。两军大战,延岑三战三胜。战斗从早晨打到中午,官兵们没有吃饭,疲惫不堪。吴汉于是派护军高午、唐邯率领精锐部队几万人,攻击公孙述,公孙述的军队乱了阵脚。
高午冲到阵前,刺击公孙述。公孙述胸口被刺穿,摔下战马,身边的人把他抬进城里。公孙述把军队交给延岑,当夜就去世了。
第二天,延岑献城投降。吴汉诛杀了公孙述的妻儿及公孙氏宗族,还诛灭延岑家族,然后放纵士兵恣意烧杀掠夺,焚烧了公孙述的宫室。刘秀听说后,非常生气,责备了吴汉放肆。