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