然而,夏国将主力集结在东线的瞿塘关,北面的防务就不可避免地变得空虚。由于这个原因,傅友德的北路军进展神速,他一路凯歌,经过陈仓、阶州、文州,攻取青川果阳关,渡过白水沟,连克江油、彰明、龙州、绵州,向成都进军。不料,却被波涛汹涌的汉水阻止了,傅友德立即砍伐树木,制造百余艘船只,准备抢渡,并制造了数千个木牌,上面写着攻克阶州、文州的日期,投入汉水之中,希望这些木牌能够乘江水暴涨之机顺流而下,汇入长江,流经瞿塘,从而达到与东路军的水师互通消息的目的。
话说东路军的水师正巧在这时卷土重来,从归州出发,驻扎于大溪口,先头将领廖永忠在江水中捞到木牌,知道北路军进展飞速,士气大震,于六月初七自百盐山、纸牌坊、溪径击破守军,重新推进到瞿塘关。
这时瞿塘关的兵力已经大不如前了,因为成都受到明军北路军的威胁,明升不得不从南线调动瞿塘关主力回援。
廖永忠决定智取瞿塘关,他暗中命令数百名壮士,身披着青蓑衣等伪装,携带干粮、水筒,并抬着小船,翻山越岭,秘密绕到瞿塘关的后面,潜伏在碧绿的茂林中,准备约期夹击瞿塘关守军。
总攻的时刻到了,廖永忠首先一举攻克瞿塘关陆寨,同时进攻水寨。明军水师的战船皆裹着铁皮,船上的将士发射火筒、火炮,冒着头顶上弹丸、利箭、石块的威胁,击断了横贯长江的铁索。这时,数百名壮士已经从上流扬旗鼓噪而下。瞿塘关守军遭到两路夹击,大败而逃,守将邹兴被火箭射死。悬挂在半空的三道“飞桥”,也彻底毁于战火。
明军乘胜攻克夔州,不久,中山侯汤和率陆师赶到,明军水陆两路并进,准备会师于重庆。他们沿江而上,所过州县纷纷归附。当明军到达铜锣峡(今巴东附近)时,坐镇重庆的明升见大势已去,心里盘算着准备投降。22日,汤和至重庆,与廖永忠会师,一起接受明升投降,并使人持书前往继续抵抗的成都,劝谕守将归附。
再说北路军傅友德渡过汉水攻克汉州之后,回师平定了夏国残余部队在文州的暴乱,延误了时间,直到7月份才到达成都。守臣戴涛、向大亨决定在城外布阵,与远道而来的明军接战。
成都守军的阵前排列着以大象为坐骑,全身披挂盔甲的勇士。明军前锋指挥李英率部用弓箭、火器向前突击,进行了一场轰轰烈烈的野战。明军在野战中布的阵,应该就是鄱阳湖之战中使用过的叠阵,即将部队分为几层,每层均配备了弓弩与火器,轮流发射。区别在于鄱阳湖之战是水战,这次是陆战。