1274年六月,忽必烈下达了总攻南宋的命令。伯颜率元军主力浮汉人江,直捣南宋统治的中心地区——吴越。为了牵制宋军入援,忽必烈同时命令屯驻在四川的元军对南宋四川沿江诸城发动攻击。
1274年底,川西元军对位于岷江沿岸的南宋重镇嘉定发起了进攻。元军分数路经由水、陆两路,突破宋军的阻截,会师于嘉定城下。元军分头占领了各个战略要地,最终把嘉定府治所凌云山城团团围住。
凌云山城乃1243年左右余玢所筑诸山城之一,依山而建,地势险要,加之历年来宋守军的多方经营,可谓是城高池深,兵精粮足。守将昝万寿率军坚守,元军也奈何他不得。至第二年五月,元将汪良臣率兵发起总攻,昝万寿率守军倾城而出,宋军大败。同时一支元军绕过嘉定,占据了岷江下游的龙坝,切断了当时宋兵入援嘉定的唯一一条水路,昝万寿在完全孤立无援而又损失惨重的情况下向元军投降,嘉定陷落。
占据嘉定后元军继续顺泯江东下,直扑泸州。沿途各州郡望风而降,元军没有遇到什么抵抗,于六月二十二日到达泸州。南宋泸州守将梅应春杀掉主战的几位将领,投降了元军。元军在占据泸州后,即沿江向重庆推进。
1274年秋,川东的元军也对南宋各山城发动了进攻。元军在大将杨文安的带领下,先攻占达州,然后由达州直取南宋云安军(今四川云阳),在此处大败宋军。1275年初,元军又下南宋渠州、降开州。七月杨文安率元军进至南宋梁山军(今四川梁平),宋军守将袁世安婴城固守,元军攻城四十余日,竟不能破,遂解围而去。又攻万州南宋万州守将上官夔亦拒战甚力,元军不能破,也只好撤围而去。冬,元军又攻白帝城,宋军坚守不出,元军也没有什么办法。至此元军已精疲力竭,不再有什么大的攻势了。
1275年秋,元东、西川驻军分别自合州和泸州出发进军重庆,准备合围重庆。西路元军占领了嘉陵江入长江的河口处,陈战船于江中,阻断了宋军援兵的通路,并分兵于重庆周围州县,以肃清外围。东路元军水陆并进,直趋重庆。一时间重庆陷入重围。当时驻于钓鱼山城的南宋四川制置使张珏多次派兵出击,以缓解重庆的紧张局势。他派赵安率兵奔袭东川元军的据点青居,又派张万率舟师断元军架在嘉陵江上的浮桥入援重庆,又约定重庆守军共同出击元军,这一系列的行动对重庆的局势稍有缓解。
元东、西两路军合围重庆,没有统一的领导,相互猜忌,并不能全力攻城,所以至第二年五月,重庆尚未攻下。至六月张珏遣人偷袭泸州,由于内援的接应,宋军一举克复泸州。泸州此时是西路元军的大后方,所有的补给均来源于此。泸州失守元军大震,西路军连忙回师攻打,东路元军无力继围重庆,也撤退了,至此,重庆之围遂解。四川的战局又进入了一种相对稳定的态势。