刘秀平定陇西以后,便集中力量对付以公孙述为首领、盘踞四川的蜀军。建武十一年(公元35年),刘秀派汉将岑彭、吴汉等率6万多人沿长江北上,派来歙、马成从陇西南进,两路会攻蜀军。
岑彭率领的大军从现在的湖北沿长江向四川进发。一路上,汉军火攻蜀军在长江上的浮桥,切断长江南北两岸蜀军的联系,取夷陵,克江关,长驱江州(现四川省重庆)城下。岑彭见江州城墙坚固,城内粮食充足,一时难以攻破,便留一部分军队包围之,自己亲率大军继续进发,攻取垫江。同时,吴汉也率军乘船沿长江进入四川。
北路的汉军在来歙、马成率领下从陇西南下。六月,汉军大破王元、环安统率的蜀军,攻取嘉陵江上游的河池、下辨。这时,蜀将环安派人混人汉军军营刺死来歙,刘秀命马成统率北路汉军。汉军继续南进,攻克武都。公孙述急令王元、延岑在广汉、资中一带建立防线,保卫都城成都。
7月,岑彭率南路汉军日夜兼程二千余里,绕到蜀军防线背后,攻占武阳,奔袭广都,直逼成都。同时,岑彭派汉将臧宫在平曲抵御蜀军主力的反击,开始时并不顺利,在刘秀派来的援军的支援下,击败蜀军,迫使蜀将延岑败退成都。随后,汉军攻占平阳乡,王元率蜀军投降,公孙述困守成都。由于南路汉军统帅岑彭被公孙述派来的刺客刺死,汉军被迫退出武阳,一时不能对成都展开进攻。
12月,新任统帅吴汉率援军赶到,汉军开展进攻成都。次年春,吴汉率军再次围攻武阳,蜀军闭门不出战,于是转而深入蜀军腹地,攻取广都,并派兵奔袭烧毁成都的市桥。武阳守军被迫投降。这时,刘秀告诫吴汉,成都有守军十多万人,不可轻放;应坚守广都,待敌出兵来攻;如敌不攻,则逐步逼近成都,待蜀将疲惫时再发起攻击。但吴汉良作主张,带兵离开广都扎营。刘秀得知后急令吴汉返回广都。命令还没到,公孙述派谢丰、袁吉率领的十万大军先赶到了。汉军寡不敌众,两处营地被谢丰分割包围。面对危局,吴汉打算冒险突围,与广都城外另一营地的汉军会合。为迷惑蜀军,汉军闭营三天,插了许多旗帜,而且烟火不断。一天夜间,吴汉率汉军主力潜出营地,与另一支汉军会合。次日,吴汉发动反击,大败蜀军,杀死谢丰、袁吉。此后,吴汉率汉军在成都、广都之间与公孙述激战,八战皆捷。公孙述战死,蜀将延岑打开成都城门投降汉军。至此,刘秀消灭了盘踞四川的割据势力,重新统一了中国。