公元13世紀。元朝向南宋發起進攻。1273年,元兵奪取了南宋的戰略重鎮襄陽,控制了長江中下遊。1274年,元朝皇帝忽必烈發兵20萬,分兩路南下,一路攻打揚州以牽制宋軍。另一路為主力攻打鄂州(武昌),至12月,奪取鄂州。1275年,元軍攻陷南宋的都城杭州。南宋朝廷在當朝太後的率領下向元軍投降。幾次大戰役過後,元軍奪得大量戰船,組建了強大的水軍。
1278年南宋朝廷在元朝大軍的追逼下退到了廣東新會、崖山一帶,幼帝趙日丙及二十多萬人馬駐紮于此,另有戰船一千多艘。元朝皇帝忽必烈為了最終消滅南宋,任命張弘範為主帥、李恒為副帥,率水、陸兵馬二萬五千,在分别攻取了漳、潮、惠三州和廣州後,分海、陸兩路向崖山進逼。
宋軍主帥張世傑之所以選中崖山駐紮,是認為崖山一帶瀕臨大海,其南面有易守難攻的崖門水道,而且這一帶海域風平浪靜,便于駐守。然而在大陸幾乎全部落入元軍之手的情況下,背海駐守無疑是一大失策,而且張世傑還犯下一個緻命的錯誤,他下令将一千多艘戰船用鐵索相連,分幾排沿崖山排開陣勢,完全喪失了機動性。
元朝至元十六年(1279年)正月,李恒帶領元軍在崖山東側偷襲登陸,将山上的宋軍行營兵寨悉數燒毀,并切斷了宋軍的淡水來源和糧草供應,迫使宋軍全部退至海上。宋軍為奪回水源和糧道,多次反攻,均難以奏效,宋軍就此陷入了糧、水、柴斷絕的絕境,在饑餓和傷病的侵擾下,宋軍的戰鬥力大為降低。
二月六日(1278年3月19日)淩晨,元軍副帥李恒率戰船順着退潮從北面順流而下,進攻宋軍船陣,但戰果不大,至中午漲潮時又順潮北退,而已經布置于南、西、西南三個方向的元軍在張弘範的帶領下則順潮水北進,從崖山與湯瓶山之間的崖門水道向宋軍船陣展開攻擊,很快就奪取了宋軍前陣并燒毀了宋軍幾十艘戰船。此時宋軍主帥張世傑在慌亂之下又下了一道錯誤的命令,将兩側戰船調往中軍,更使宋軍陣形大亂。
午後,海面突降大雨,宋軍急忙砍斷鐵索,趁着雨霧開始突圍,但僅有張世傑帶着十幾艘大船沖出元軍重圍,包括宋帝禦船在内的宋軍大部被元軍越圍越緊,丞相陸秀夫在絕望之下先逼妻兒投海自盡,然後自己抱着宋幼帝跳海而亡。逃出重圍的張世傑後來在陽江南面的海陵島附近遇上風暴,船翻人亡。
此役,元軍共燒毀、擊沉宋軍戰船二百餘艘,繳獲八百餘艘,俘虜宋軍兩萬多人,宋軍戰死十萬人以上。宋朝皇室在臨安(今杭州)向元軍統帥伯顔投降後,宋廷殘部南逃,經曆三年二帝,就此徹底滅亡了。