祥興二年(1279年)二月六日癸未,張弘範預備猛攻,元軍中有建議先用火炮,弘範認為火炮打亂宋 陸秀夫背幼帝投海
軍的一字陣型,令其容易撤退。明日,張弘範將其軍分成四份,宋軍的東、南、北三麵皆駐一軍;弘範自領一軍與宋軍相去裏餘,並以奏樂為以總攻訊號。首先北軍乘潮進攻宋軍北邊失敗,李恒等順潮而退。元軍假裝奏樂樂,宋軍聽後以為元軍正在宴會,稍微鬆懈了。
正午時段,張弘範的水師於是正麵進攻,接著用布遮蔽預先建成並埋下伏兵的船樓,以鳴金為進攻訊號。各伏兵負盾俯伏,在矢雨下駛近宋船。兩邊船艦接近,元軍鳴金撤布交戰,一時間連破七艘宋船。宋師大敗,元軍一路打到宋軍中央。這時張世傑早見大勢已去,抽調精兵,並已經預先和蘇劉義帶領餘部十餘隻船艦斬斷大索突圍而去。
趙昺的船在軍隊中間,四十三歲的陸秀夫見無法突圍,便背著八歲的趙昺投海,隨行十多萬軍民亦相繼跳海壯烈殉國!張世傑希望奉楊太後的名義再找宋朝趙氏後人為主,再圖後舉;但楊太後在聽聞宋帝昺的死訊在後亦赴海自殺,張世傑將其葬在海邊。不久張世傑在大風雨中不幸溺卒於平章山下(約今廣東省陽江市西南的海陵島對開海麵)。
崖山之戰是宋朝對蒙古侵略最後一次有組織的抵抗,10萬餘人投海殉難,其中有相當部分是自兩晉以來的宗門士族後裔。他們一路與宋帝南逃,終於走到絕路。此戰之後,中國在曆史上第一次完全淪陷於外族。崖山之戰也是中國曆史的重要的轉折點。中國獨立發展的進程被打斷,曾經高度發達的經濟、文化、科技、科舉與世族相結合的官僚製度、開始受限的皇權、先進的政治製度等等都中斷了,文明落後的蒙古人統治的元朝開始實行封閉、保守、輕工商業和更加集權的製度,並正式以程朱理學為科舉的主要內容和政府的官方思想;而之後推翻蒙元建立的明朝又走向保守封閉的道路。不少外國的史學家將宋朝滅亡視為古典意義中國的結束,所謂“崖山之後,已無中國”。
崖門海戰之後1天,即二月七日早晨,海上浮屍無數。陸秀夫的屍體被百姓找到,安葬起來;而小皇帝趙昺的屍體則為元軍尋得,隻見一眉清目秀的小兒身穿龍袍,頭戴皇冠,身上還掛著一個玉璽。元兵將玉璽交給張弘範,張弘範確認這小兒是趙昺,派人尋回,然而趙昺的屍體已經下落不明。據說被百姓埋葬在了廣東深圳赤灣村裏,至今仍存。
崖山海戰後,宋室覆亡。元將張弘範為耀武揚威,命人在崖山岩壁上雕刻了“鎮國大將軍張弘範滅宋於此”十二個大字。然而張弘範沒有得意多久便於次年(1280)病死。後人因恥於張弘範先投降蒙元,後請兵攻宋的所做所為,將其大字抹改為“宋將張弘範滅宋於此”。