在元軍大兵壓境的形勢下,南宋朝廷內部矛盾重重,主戰主和舉棋不定。雖然朝廷屢次詔令各地宋軍入衛臨安,終因元軍全麵進攻,荊湖、川陝戰場宋軍自顧不暇,兩淮宋軍被元軍阻隔無法渡江赴援,隻有郢州(今湖北鍾祥縣)張世傑、江西文天祥等將帥和兩浙、福建部分廂禁兵到達臨安守衛。但這些小規模增援根本無法扭轉整個戰爭局麵。1275年5月,宋廷命主戰派張世傑率軍出擊元軍外圍防線,沒能打通。6月,淮東製置使李庭芝命薑才等打通援救揚州的通道,兩軍在揚子橋激戰,宋軍死傷萬餘人,薑才隻帶數騎逃回揚州。為確保臨安,宋廷組織焦山之戰。張世傑約殿前都指揮使張彥率兵出鎮江,以圖控製長江南岸,揚州李庭芝出兵瓜洲,從江北配合,自己率水師陳兵鎮江以東的焦山江麵,約定三路俱進,與元軍決戰。但揚州宋軍沒有按時趕到,鎮江張彥拒不發兵,使張世傑孤軍深入。元將阿術、阿塔海、張弘範等在石公山居高臨下指揮戰鬥,命萬戶劉深沿長江北岸繞至宋軍背後,董文炳、劉國傑從焦山左右兩邊進擊,萬戶忽剌直衝宋軍大陣。元軍乘風放火箭,宋船紛紛起火,陣勢頓時大亂,宋師全軍覆沒,損失戰艦七百餘艘。焦山之敗,宋朝軍隊損失殆盡,朝廷或主議和,或主南逃,分崩離析,一籌莫展,南宋滅亡指日可待了。

至元十二年(1275年)七月,忽必烈最後下定滅宋決心,命伯顏率領元軍直逼臨安。伯顏受命後,召集攻宋將帥布署方略,確定了“分諸軍為三道,會於臨安”的作戰布署。這年十一月,伯顏分兵三路會攻臨安,西路由參政阿剌罕,四萬戶總管奧魯赤率領蒙古騎兵出建康,向溧陽、獨鬆關(今浙江安吉縣東南)進軍;東路由參政董文炳、萬戶張弘範、都統範文虎率水師沿江入海,向海鹽、澉浦(今浙江海鹽縣南)進軍;中路伯顏帶領諸軍,率水陸兩軍出鎮江,向常州、平江(今江蘇蘇州市)進軍。

西路軍主帥阿剌罕率軍南下,直趨溧陽,遭到南宋守軍的抵抗,結果宋軍損兵折將,殘部南撤。元軍乘勝追擊,在溧陽西南銀林東壩再次打敗宋軍。元軍在追擊途中受到南宋援軍的阻擊,雙方展開激戰,後來元軍派蒙古騎兵衝殺,宋軍抵擋不住,突圍南逃。溧陽之戰,宋軍損失將校七十餘人,士卒近兩萬人,傷亡慘重。西路軍於十一月下旬逼進建康通往臨安的要隘獨鬆關(今浙江安吉縣東南),南宋守將張濡率兵北上阻擊元軍,與元軍騎兵交戰。宋軍雖是精兵強將,但隻有數千人,而且都是步兵,雖然奮勇衝殺,但卻難以阻擋強大的蒙古騎兵,終於被擊潰,主將張濡被殺,士兵死傷兩千餘人,元軍控製了臨安的北大門。

中路軍伯顏率兵進攻常州,常州是拱衛臨安的前陣,是元軍整個攻取臨安計劃的關鍵,伯顏派兵擊潰宋增援部隊後,親自指揮攻城。元軍在城南築高台,把炮放在台上向城內猛轟,又用火箭射入城中,常州城內一片火海。伯顏命元軍架雲梯、繩橋攻城,元軍攻入城內。常州守將姚岩率將士浴血奮戰,終因寡不敵眾,沒有外援而失敗。姚岩、王安節等陣亡,僧人萬安、莫謙之長老率僧兵赴援,五百名僧兵全部戰死。

伯顏下令屠城,隻有七人幸免於難。常州之戰是宋元戰爭中最悲壯的一役,影響很大。至元十二年(1275年)冬,正當常州軍民艱苦抗敵之際,宋廷派張全率兩千餘人由淮入援常州,文天祥也派部將尹玉率兵偕同赴援。伯顏得報後,命懷都、王良臣領兵在五牧(今江蘇常州東南)阻擊宋軍。戰鬥開始後,文天祥部將麻士龍與元軍交戰,由於張全按兵不救,麻士龍戰死。在元軍攻擊下,張全退到五牧,文天祥部將朱華奮起抗擊,擋住了元軍。尹玉指揮宋軍與元軍決戰,元軍損失慘重。

元將王良臣配合懷都水陸夾擊宋軍,宋將張全始終按兵不動,尹玉失敗,潰軍南逃,尹玉力戰被俘,為元軍所殺,所部將士大部分戰死。張全見大勢已去,率軍逃離五牧,致使救援失敗,沒能解常州之圍。伯顏攻破常州後,派都元帥闍裏帖木兒,萬戶懷都率兵攻無錫、平江,在元軍大兵壓境下,兩地宋軍投降元軍。東路水軍以範文虎為先鋒,順江東進,由於長江兩岸已無宋軍把守,元軍進軍順利。當時長江口活躍著一支由貧苦漁民組成的水軍,由朱清、張瑄率領,不受宋朝管轄。元軍主帥董文炳認為可以利用這支力量,便招降了這支海上武裝,朱、張二人帶領人馬和海船隨元軍南下攻取臨安,增強了元軍海戰能力。東路軍出長江口後沿海南下,十二月逼近錢塘江口,從海道包圍了臨安。

至元十二年(1275年)十二月,元朝三路大軍進逼臨安,隨時準備攻占臨安。至元十三年(1276年)正月,東路軍董文炳一部登陸,抵達鹽官縣(今浙江海寧市),宋守軍投降。董文炳率東路軍與中路伯顏大軍會師,西路軍阿剌罕也率部與中路軍會師。在大軍壓境形勢下,南宋朝廷一片混亂,丞相陳宜中請太皇太後出海避敵,張世傑、文天祥主張決死一戰。宋廷既沒有兵力抵抗,求和又被元軍拒絕,於是奉璽書向伯顏請降。伯顏遣董文炳、呂文煥、範文虎入城安撫百姓,禁止殺掠,封閉倉庫,收繳宋廷袞冕、圭璧、儀仗、圖籍以及大批財寶、器物,運往大都(今北京市)。

伯顏親自入臨安城安置宋廷人員,把宋帝趙皇太後全氏以及其他朝官、宮廷人員監護起程,浩浩****北上。

十三年五月,陳宜中、張世傑、陸秀夫、文天祥等在福州擁立益王趙昰為帝,改元景炎。封廣王趙昺為衛王,陳宜中為左丞相兼樞密使、都督諸路軍馬,張世傑為樞密副使,陸秀夫為簽書樞密院事,文天祥為樞密使、同都督。遣將向江西、兩浙南部進兵抗元。六月,元軍為追殲南宋殘部,於鄂州、臨安設尚書省,下設諸路宣慰司。命諸路將帥繼續南進。張世傑被迫擁趙昰、趙昺逃往海上。

十四年五月,文天祥率軍進攻江西,各地義軍紛起響應,收複除贛州之外所轄九縣,吉州八縣複其半。後因勢孤力單敗退廣東,旋於五坡嶺(今廣東海豐北)被俘。

十五年二月,元西川行院使不花率重兵圍攻重慶,城破,守將張玨被俘。繼而征降夔州,八個月後,合州(今四川合川東)守將王立以城降。四川平。四月,宋帝趙昰卒,張世傑、陸秀夫又擁立趙昺為帝,徙至厓山(今廣東新會南)。六月,忽必烈為徹底消滅南宋勢力,命張弘範為蒙古、漢軍都元帥,率水、步騎軍兩萬由海道南下,都元帥李恒率步騎由陸路南下,會殲南宋殘部。張弘範由海道襲漳(今屬福建)、潮、惠(均屬廣東)三州。李恒率步騎越大庾嶺入廣東,取英德(今屬廣東),占領廣州。

十六年正月,張弘範、李恒率軍會至厓山,首先控扼海口,斷宋軍糧道。二月初,巧妙利用海潮,南北對進,並用遮障防矢石,瀕宋艦奮勇拚殺,全殲宋軍。

文天祥在海豐兵敗被俘,張世傑戰船沉沒,走投無路的南宋殘餘勢力終於在至元十六年二月初六(1279年3月19日),隨著崖山海戰失敗及陸秀夫負剛滿八歲的小皇帝跳海赴死而徹底滅亡,四十八年與蒙古的抗衡完結。

自此趙宋宗室在中國319年的統治失去政權,無法光複。