宋景炎二年(元至元十四年,1277)二月,元軍攻入廣州(今屬廣東),隨即又攻占廣東諸州。正值此時,元朝北方動亂,萬戶隻兒斡帶於應昌(今內蒙古克什克騰旗境)舉兵,元帝忽必烈遂召南征諸將北返,隨同伯顏北上征伐,另任命官員負責管理元軍占領地區的政務及軍事。趁元軍北撤之機,宋廷將領大舉反攻,奪回失地。文天祥相繼收複梅州(治今廣東梅縣),入江西收複會昌縣(今屬江西)、吉州(治今江西吉安),於雩都(今屬江西)擊敗元軍。宋廣東製置使張鎮孫收複廣東。張世傑則親自率兩淮兵士進攻泉州(今屬福建),討伐叛將蒲壽庚,其時汀州、漳州等地陳吊眼、許夫人亦各率峒軍、畬軍,趕來與之合兵。蒲壽庚關閉城門,頑強抵抗。張世傑在圍攻泉州的同時,又分兵收複邵武軍(今福建邵武)。
八月,元將李恒出兵增援贛州,自己則率兵於興國(今屬江西)擊敗文天祥所部。文天祥不及準備,損失慘重,其妻妾子女被元兵俘獲,自己則因部將趙時賞掩護,方得脫險。九月,元帝忽必烈下詔,令塔出與李恒、呂師夔等將領率步軍入大庾嶺(今江西大庾南);忙兀台、唆都、蒲壽庚等領水軍下海,兩路兵馬合圍宋帝趙。
元軍再度來攻,宋廷遂轉移至潮州淺灣(今廣東潮州南)。其時宋廷於海岸邊漂泊不定,朝廷禮儀幾盡忽略,甚至楊太妃垂簾聽政,與群臣交談仍自稱奴家。每逢朝會,陸秀夫仍儀表莊重,如臨安朝廷一樣。有時列班朝上,看到朝廷淒涼殘破的景象,不免淒然淚下,陸秀夫即用朝服拭淚,以至衣服浸濕,左右無不悲痛傷心。
十月,元將唆都率所部進攻興化軍(今福建莆田)。守將陳瓚緊閉城門,奮力抗擊。唆都親臨城下勸降,遭到城上宋兵密集箭、石的攻擊。元兵打造雲梯、炮石,猛烈攻城。經一日激戰,守城宋兵傷亡甚重,方得入城。元軍俘虜陳瓚,將其殘害致死。又屠城,致使城中血流成河。
十一月,塔出會合其他幾路元軍,經過一番激戰,攻陷廣州。元將劉深率兵入攻淺灣,張世傑領兵迎戰,大敗,隻得保護著宋帝趙登海船逃往秀山(今廣東東莞西南),又至井澳(今廣東中山南)。而宰相陳宜中則索性逃往占城(位今越南中南部),丟下朝廷,一去不返。宋帝剛到達井澳,正遇颶風,海船毀壞,趙掉入海中,險些溺死。趙自此染病在身。颶風過後十數天,隨從宋廷的兵士才集合在一起,然而死者已十之四五。元將劉深緊追,又襲擊井澳。趙帶病逃奔謝女峽,又離開海島,漂泊至七裏洋。
宋景炎三年(元至元十五年,1278),趙自海上移至洲(今廣東雷州灣外)。宋將曾淵子起兵占據雷州(治今廣東海康)。元軍勸降不成,遂進兵猛攻。曾淵子於城破之時,逃往洲,被委以參知政事,廣西宣諭使。不久,趙病情加劇。四月,十一歲的趙病故。朝臣見如此情景,皆欲散去。唯有陸秀夫認為:“度宗皇帝一子尚在,將焉置之?古人有以一旅成中興者,今百官有司皆具,士卒數萬,天若未欲絕宋,此豈不可為國耶?”②他與群臣共同擁立年僅八歲的衛王趙繼立為帝,又下令改元祥興。楊太妃仍與大臣一同議政。時陳宜中在占城,因與張世傑意見不合,屢召不至。宋廷遂以陸秀夫為左丞相,與張世傑共同秉政。其後,宋廷又遷往厓山(今廣東新會南),張世傑率兵駐守厓山,陸秀夫則“外籌軍旅,內調工役,凡有所述作,又盡出其手”③。
厓山位於新會(今屬廣東)南八十裏處的大海之中,與奇石山相對。張世傑視此為天險,易守難攻,便於此大興土木,令兵士伐木營建皇帝行宮,且起名為慈元殿,遷楊太妃居住其中。當時隨同宋帝轉移至此的官吏、兵士及百姓多達二十餘萬,多居住於船上,所需糧食多取自廣右道四州及海外四州。
六月,元帝忽必烈任命張弘範為都元帥,李恒為副帥,統兵入閩、廣地區,追剿宋廷殘餘勢力。十一月,擊敗文天祥所部,俘文天祥。宋廷陸上勢力幾盡殲滅,厓山宋廷更孤立無援。
宋祥興二年(元至元十六年,1279)正月,張弘範率元軍自潮陽乘船入海,搜尋宋帝。駛至甲子門(今廣東陸豐東南),俘宋軍巡邏兵士,得知宋帝趙所在,便指揮船隊駛向厓山。
元軍兵進厓山,有將士建議宋軍率先占據海口,則可進可退,否則為元軍所據,則無進退之路。張世傑擔心久航海上恐生離心,拒絕此議,認為:“頻年航海,何時已乎?今須與決勝負。”④隨即下令焚毀行朝草市,又將千餘艘大海船連接在一起,排成“一”字陣,船頭向外,船尾向內,停泊於海中。又用大繩貫穿,於四周的船上搭建樓棚,建成一水寨。宋帝趙被安置在寨中,作死守之計。