在元军大兵压境的形势下,南宋朝廷内部矛盾重重,主战主和举棋不定。虽然朝廷屡次诏令各地宋军入卫临安,终因元军全面进攻,荆湖、川陕战场宋军自顾不暇,两淮宋军被元军阻隔无法渡江赴援,只有郢州(今湖北钟祥县)张世杰、江西文天祥等将帅和两浙、福建部分厢禁兵到达临安守卫。但这些小规模增援根本无法扭转整个战争局面。1275年5月,宋廷命主战派张世杰率军出击元军外围防线,没能打通。6月,淮东制置使李庭芝命姜才等打通援救扬州的通道,两军在扬子桥激战,宋军死伤万余人,姜才只带数骑逃回扬州。为确保临安,宋廷组织焦山之战。张世杰约殿前都指挥使张彦率兵出镇江,以图控制长江南岸,扬州李庭芝出兵瓜洲,从江北配合,自己率水师陈兵镇江以东的焦山江面,约定三路俱进,与元军决战。但扬州宋军没有按时赶到,镇江张彦拒不发兵,使张世杰孤军深入。元将阿术、阿塔海、张弘范等在石公山居高临下指挥战斗,命万户刘深沿长江北岸绕至宋军背后,董文炳、刘国杰从焦山左右两边进击,万户忽剌直冲宋军大阵。元军乘风放火箭,宋船纷纷起火,阵势顿时大乱,宋师全军覆没,损失战舰七百余艘。焦山之败,宋朝军队损失殆尽,朝廷或主议和,或主南逃,分崩离析,一筹莫展,南宋灭亡指日可待了。
至元十二年(1275年)七月,忽必烈最后下定灭宋决心,命伯颜率领元军直逼临安。伯颜受命后,召集攻宋将帅布署方略,确定了“分诸军为三道,会于临安”的作战布署。这年十一月,伯颜分兵三路会攻临安,西路由参政阿剌罕,四万户总管奥鲁赤率领蒙古骑兵出建康,向溧阳、独松关(今浙江安吉县东南)进军;东路由参政董文炳、万户张弘范、都统范文虎率水师沿江入海,向海盐、澉浦(今浙江海盐县南)进军;中路伯颜带领诸军,率水陆两军出镇江,向常州、平江(今江苏苏州市)进军。
西路军主帅阿剌罕率军南下,直趋溧阳,遭到南宋守军的抵抗,结果宋军损兵折将,残部南撤。元军乘胜追击,在溧阳西南银林东坝再次打败宋军。元军在追击途中受到南宋援军的阻击,双方展开激战,后来元军派蒙古骑兵冲杀,宋军抵挡不住,突围南逃。溧阳之战,宋军损失将校七十余人,士卒近两万人,伤亡惨重。西路军于十一月下旬逼进建康通往临安的要隘独松关(今浙江安吉县东南),南宋守将张濡率兵北上阻击元军,与元军骑兵交战。宋军虽是精兵强将,但只有数千人,而且都是步兵,虽然奋勇冲杀,但却难以阻挡强大的蒙古骑兵,终于被击溃,主将张濡被杀,士兵死伤两千余人,元军控制了临安的北大门。
中路军伯颜率兵进攻常州,常州是拱卫临安的前阵,是元军整个攻取临安计划的关键,伯颜派兵击溃宋增援部队后,亲自指挥攻城。元军在城南筑高台,把炮放在台上向城内猛轰,又用火箭射入城中,常州城内一片火海。伯颜命元军架云梯、绳桥攻城,元军攻入城内。常州守将姚岩率将士浴血奋战,终因寡不敌众,没有外援而失败。姚岩、王安节等阵亡,僧人万安、莫谦之长老率僧兵赴援,五百名僧兵全部战死。
伯颜下令屠城,只有七人幸免于难。常州之战是宋元战争中最悲壮的一役,影响很大。至元十二年(1275年)冬,正当常州军民艰苦抗敌之际,宋廷派张全率两千余人由淮入援常州,文天祥也派部将尹玉率兵偕同赴援。伯颜得报后,命怀都、王良臣领兵在五牧(今江苏常州东南)阻击宋军。战斗开始后,文天祥部将麻士龙与元军交战,由于张全按兵不救,麻士龙战死。在元军攻击下,张全退到五牧,文天祥部将朱华奋起抗击,挡住了元军。尹玉指挥宋军与元军决战,元军损失惨重。
元将王良臣配合怀都水陆夹击宋军,宋将张全始终按兵不动,尹玉失败,溃军南逃,尹玉力战被俘,为元军所杀,所部将士大部分战死。张全见大势已去,率军逃离五牧,致使救援失败,没能解常州之围。伯颜攻破常州后,派都元帅阇里帖木儿,万户怀都率兵攻无锡、平江,在元军大兵压境下,两地宋军投降元军。东路水军以范文虎为先锋,顺江东进,由于长江两岸已无宋军把守,元军进军顺利。当时长江口活跃着一支由贫苦渔民组成的水军,由朱清、张瑄率领,不受宋朝管辖。元军主帅董文炳认为可以利用这支力量,便招降了这支海上武装,朱、张二人带领人马和海船随元军南下攻取临安,增强了元军海战能力。东路军出长江口后沿海南下,十二月逼近钱塘江口,从海道包围了临安。
至元十二年(1275年)十二月,元朝三路大军进逼临安,随时准备攻占临安。至元十三年(1276年)正月,东路军董文炳一部登陆,抵达盐官县(今浙江海宁市),宋守军投降。董文炳率东路军与中路伯颜大军会师,西路军阿剌罕也率部与中路军会师。在大军压境形势下,南宋朝廷一片混乱,丞相陈宜中请太皇太后出海避敌,张世杰、文天祥主张决死一战。宋廷既没有兵力抵抗,求和又被元军拒绝,于是奉玺书向伯颜请降。伯颜遣董文炳、吕文焕、范文虎入城安抚百姓,禁止杀掠,封闭仓库,收缴宋廷袞冕、圭璧、仪仗、图籍以及大批财宝、器物,运往大都(今北京市)。
伯颜亲自入临安城安置宋廷人员,把宋帝赵皇太后全氏以及其他朝官、宫廷人员监护起程,浩浩****北上。
十三年五月,陈宜中、张世杰、陆秀夫、文天祥等在福州拥立益王赵昰为帝,改元景炎。封广王赵昺为卫王,陈宜中为左丞相兼枢密使、都督诸路军马,张世杰为枢密副使,陆秀夫为签书枢密院事,文天祥为枢密使、同都督。遣将向江西、两浙南部进兵抗元。六月,元军为追歼南宋残部,于鄂州、临安设尚书省,下设诸路宣慰司。命诸路将帅继续南进。张世杰被迫拥赵昰、赵昺逃往海上。
十四年五月,文天祥率军进攻江西,各地义军纷起响应,收复除赣州之外所辖九县,吉州八县复其半。后因势孤力单败退广东,旋于五坡岭(今广东海丰北)被俘。
十五年二月,元西川行院使不花率重兵围攻重庆,城破,守将张珏被俘。继而征降夔州,八个月后,合州(今四川合川东)守将王立以城降。四川平。四月,宋帝赵昰卒,张世杰、陆秀夫又拥立赵昺为帝,徙至厓山(今广东新会南)。六月,忽必烈为彻底消灭南宋势力,命张弘范为蒙古、汉军都元帅,率水、步骑军两万由海道南下,都元帅李恒率步骑由陆路南下,会歼南宋残部。张弘范由海道袭漳(今属福建)、潮、惠(均属广东)三州。李恒率步骑越大庾岭入广东,取英德(今属广东),占领广州。
十六年正月,张弘范、李恒率军会至厓山,首先控扼海口,断宋军粮道。二月初,巧妙利用海潮,南北对进,并用遮障防矢石,濒宋舰奋勇拼杀,全歼宋军。
文天祥在海丰兵败被俘,张世杰战船沉没,走投无路的南宋残余势力终于在至元十六年二月初六(1279年3月19日),随着崖山海战失败及陆秀夫负刚满八岁的小皇帝跳海赴死而彻底灭亡,四十八年与蒙古的抗衡完结。
自此赵宋宗室在中国319年的统治失去政权,无法光复。