至元十年(1273年),元军攻陷襄樊后,右丞相伯颜率水陆大军沿长江顺流东下,势如破竹。伯颜鉴于四川、湖南、江陵(今属湖北)等地未下,为保障后方安全,命右丞阿里海牙领兵四万镇守鄂州。伯颜自率十余万大军,令降将吕文焕为先锋,以战抚兼施之策,沿江东进。
至元十二年(1275年),元军攻打建康,宋朝建康留守赵潽弃城而逃,都统司都统制徐王荣等开城请降,元军兵不血刃,占领建康。元军进占建康后,伯颜派兵进攻建康周围的重要城镇,随即攻陷镇江,控制了江东地区,建立起稳固的南进基地。与此同时,为防止两淮宋军南下救援,忽必烈命阿术率军渡江,进围扬州。阿术在扬州东南的瓜洲修造楼橹,缮制战具;又在扬州城外围树栅,修筑坚固的堡垒长围,截断了宋军增援部队;又派水师堵截江面,控制了长江天险,断绝了宋军渡江南救临安的通道。南宋朝廷立国,是以长江为防线,两淮为藩篱,“重兵皆驻扬州,临安倚之为重”。
元军占领建康,进围扬州,攻占两淮,南宋都城临安完全失去了屏障。元军在建康休整后,兵精粮足,战斗力更加强盛,随时准备攻取临安,处在进攻的有利地位。在元军大兵压境的形势下,南宋朝廷内部矛盾重重,主战、主和举棋不定。虽然朝廷屡次诏令各地宋军入卫临安,终因元军全面进攻,荆湖、川陕战场宋军自顾不暇,两淮宋军被元军阻隔无法渡江赴援,只有郢州(今湖北钟祥县)张世杰、江西文天祥等将帅和两浙、福建部分厢禁兵到达临安守卫。但这些小规模增援根本无法扭转整个战争局面。1275年5月,宋廷命主战派张世杰率军出击元军外围防线,没能打通。6月,淮东制置使李庭芝命姜才等打通援救扬州的通道,两军在扬子桥激战,宋军死伤万余人,姜才只带数骑逃回扬州。
为确保临安,宋廷组织焦山之战。张世杰约殿前都指挥使张彦率兵出镇江,以图控制长江南岸;扬州李庭芝出兵瓜洲,从江北配合;自己率水师陈兵镇江以东的焦山江面,约定三路俱进,与元军决战。但扬州宋军没有按时赶到,镇江张彦拒不发兵,使张世杰孤军深入。元将阿术、阿塔海、张弘范等在石公山居高临下指挥战斗,命万户刘深沿长江北岸绕至宋军背后,董文炳、刘国杰从焦山左右两边进击,万户忽剌直冲宋军大阵。元军乘风放火箭,宋船纷纷起火,阵势顿时大乱,宋师全军覆没,损失战舰七百余艘。焦山之败,宋朝军队损失殆尽,朝廷或主议和,或主南逃,分崩离析,一筹莫展,南宋灭亡指日可待了。
7月,张世杰与平江都统刘师勇、知泰州孙虎臣率战舰万艘,以十舟为一舫,连以铁索,碇于江中,横列焦山江面,欲与元军决战,被阿术以水陆协同进击,配以火攻击败,损失惨重。忽必烈最后下定灭宋决心,命伯颜率领元军直逼临安。伯颜受命后,召集攻宋将帅部署方略,确定了“分诸军为三道,会于临安”的作战部署。这年11月,伯颜分兵三路会攻临安,西路由参政阿剌罕,四万户总管奥鲁赤率领蒙古骑兵出建康,向溧阳、独松关(今浙江安吉县东南)进军;东路由参政董文炳、万户张弘范、都统范文虎率水师沿江入海,向海盐、澉浦(今浙江海盐县南)进军;中路伯颜带领诸军,率水陆两军出镇江,向常州、平江(今江苏苏州市)进军。
西路军主帅阿剌罕率军南下,直趋溧阳,遭到南宋守军的抵抗,结果宋军损兵折将,残部南撤。元军乘胜追击,在溧阳西南银林东坝再次打败宋军。元军在追击途中受到南宋援军的阻击,双方展开激战,后来元军派蒙古骑兵冲杀,宋军抵挡不住,突围南逃。溧阳之战,宋军损失将校七十余人,士卒近二万人,伤亡惨重。西路军于十一月下旬逼近建康通往临安的要隘独松关(今浙江安吉县东南),南宋守将张濡率兵北上阻击元军,与元军骑兵交战。宋军虽是精兵强将,但只有数千人,而且都是步兵,虽然奋勇冲杀,但却难以阻挡强大的蒙古骑兵,终于被击溃,主将张濡被杀,士兵死伤两千余人。元军控制了临安的北大门。
中路军伯颜率兵进攻常州。常州是拱卫临安的前阵,是元军整个攻取临安计划的关键。伯颜派兵击溃宋增援部队后,亲自指挥攻城。元军在城南筑高台,把炮放在台上向城内猛轰,又用火箭射入城中,常州城内一片火海。伯颜命元军架云梯、绳桥攻城,元军攻入城内。常州守将姚岩率将士浴血奋战,终因寡不敌众,没有外援而失败。姚岩、王安节等阵亡,僧人万安、莫谦之长老率僧兵赴援,五百名僧兵全部战死。伯颜下令屠城,只有七人幸免于难。常州之战是宋元战争中最悲壮的一役,影响很大。
至元十二年(1275年)冬,正当常州军民艰苦抗敌之际,宋廷派张全率两千余人由淮入援常州,文天祥也派部将尹玉率兵偕同赴援。伯颜得报后,命怀都、王良臣领兵在五牧(今江苏常州东南)阻击宋军。战争开始后,文天祥部将麻士龙与元军交战,由于张全按兵不救,麻士龙战死。在元军攻击下,张全退到五牧,文天祥部将朱华奋起抗击,挡住了元军。尹玉指挥宋军与元军决战,元军损失惨重。元将王良臣配合怀都水陆夹击宋军,宋将张全始终按兵不动,尹玉失败,溃军南逃。尹玉力战被俘,为元军所杀,所部将士大部分战死。张全见大势已去,率军逃离五牧,致使救援失败,没能解常州之围。
伯颜攻破常州后,派都元帅阇里帖木儿、万户怀都率兵攻无锡、平江。在元军大兵压境下,两地宋军投降元军。
东路水军以范文虎为先锋,顺江东进,由于长江两岸已无宋军把守,元军进军顺利。当时长江口活跃着一支由贫苦渔民组成的水军,由朱清、张瑄率领,不受宋朝管辖。元军主帅董文炳认为可以利用这支力量,便招降了这支海上武装。朱、张二人带领人马和海船随元军南下攻取临安,增强了元军的海战能力。东路军出长江口后沿海而下,十二月逼近钱塘江口,从海道包围了临安。
至元十二年(1275年)十二月,元朝三路大军进逼临安,随时准备攻占临安。至元十三年(1276年)正月,东路军董文炳一部登陆,抵达盐官县(今浙江海宁市),宋守军投降。
董文炳率东路军与中路伯颜大军会师,西路军阿剌罕也率部与中路军会师。在大军压境形势下,南宋朝廷一片混乱,丞相陈宜中请太皇太后出海避敌,张世杰、文天祥主张决死一战。宋廷既没有兵力抵抗,求和又被元军拒绝,于是奉玺书向伯颜请降。伯颜遣董文炳、吕文焕、范文虎入城安抚百姓,禁止杀掠,封闭仓库,收缴宋廷袞冕、圭璧、仪仗、图籍以及大批财宝、器物,运往大都(今北京市)。伯颜亲自入临安城安置宋廷人员,把宋帝赵显、皇太后全氏以及其他朝官、宫廷人员监护启程,浩浩荡荡北上。至此,临安被元军攻取,南宋朝廷灭亡。
伯颜攻取临安之战,是宋元鼎革之际的最后一次重大战役,至元十二年(1275年)春,元军攻占建康(今江苏南京市),到至元十三年(1276年)春,进占临安(今浙江杭州市),历时一年,中经溧阳之战、独松关之战、常州之战、五牧之战等激战,以南宋朝廷投降元朝而告结束。从战略来看,元朝采用围困逼降的策略,步步进逼,除武力进攻外,一直遣使招降。如忽必烈派礼部尚书廉希圣、工部侍郎严忠范到宋朝劝降,伯颜派张羽等人招降。在南宋朝廷举棋不定之际,伯颜屡次派人劝降,只不过是为稳住宋朝君臣。元军利用战抚并用策略,取得了整个战局的主动权。