元军在襄樊之战大破宋军以后,直逼南宋首都临安(今浙江杭州)。德祐二年(1276年),宋朝朝廷求和不成,于是五岁的小皇帝宋恭帝投降。宋度宗的杨淑妃在国舅杨亮节的护卫下,带着自己的儿子即宋朝二王(益王赵昰、广王赵昺)出逃,在金华与大臣陆秀夫、张世杰、陈宜中、文天祥等会合。接着进封赵昰为天下兵马都元帅,赵昺为副元帅。元军统帅伯颜继续对二王穷追不舍,于是二王只好逃到福州。
1276年五月,陈宜中、张世杰、陆秀夫、文天祥等在福州拥立益王赵昰为帝,改元景炎;封广王赵昺为卫王,陈宜中为左丞相兼枢密使、都督诸路军马,张世杰为枢密副使,陆秀夫为签书枢密院事,文天祥为枢密使、同都督。遣将向江西、两浙南部进兵抗元。
赵昰做皇帝以后,元朝加紧灭宋步伐。宋端宗景炎二年(1277年),福州沦陷,宋端宗的南宋流亡小朝廷直奔泉州。张世杰要求借船,却遭到泉州市舶司、阿拉伯裔商人蒲寿庚拒绝,随即早有异心的蒲寿庚投降元朝。张世杰抢夺船只出海,南宋流亡朝廷只好去广东。宋端宗准备逃到雷州,不料遇到台风,帝舟倾覆,端宗差点溺死,并因此得病。左丞相陈宜中建议带宋端宗到占城(今越南南部),并自己前往占城,但后来二王数次召其回来都不返;最后逃到暹罗(今泰国),最终死在那里。端宗因落水染病,不久病逝,由弟弟七岁的卫王赵昺登基,年号祥兴。赵昺登基以后,左丞相陆秀夫和太傅(太子的老师)张世杰护卫著赵昺逃到厓山,在当地成立据点,准备继续抗元。不久,在现时广东和江西二省抗元的文天祥得不到流亡朝廷的支援,被张弘范部将王惟义在海丰县的五坡岭生擒,在陆地的抗元势力覆灭。
祥兴二年(1279年),元朝派汉人投降大将张弘范进攻赵昺朝廷。后来在不久以前攻占广州的西夏后裔李恒也带领援军也加入张弘范军。此时宋军兵力号称二十多万,实际其中十数万为文官、宫女、太监和其他非战斗人员,各类船只两千余艘。元军张弘范和李恒有兵力十余万,战船数百艘。这时宋军中有建议认为应该先占领海湾出口,保护向西方的撤退路线。张世杰为防止士兵逃亡,否决建议,并下令尽焚陆地上的宫殿、房屋、据点;又将下令千多艘宋军船只以“连环船”的办法用大绳索一字形连贯在海湾内,并且安排赵昺的“龙舟”放在军队中间。元军以小船载茅草和膏脂,乘风纵火冲向宋船。但宋船皆涂泥,并在每条船上横放一根长木,以抵御元军的火攻。元朝水师火攻不成,以水师封锁海湾,又以陆军断绝宋军汲水及砍柴的道路。宋军吃干粮十余日,饮海水致士兵呕泄。张世杰率苏刘义和方兴日大战元军,张弘范擒张世杰甥韩某,以其向张世杰三次招降不果。
祥兴二年(1279年)二月六日癸未,张弘范预备猛攻,元军中有建议先用火炮,弘范认为火炮打乱宋军的一字阵型,令其容易撤退。第二日,张弘范将其军分成四份,宋军的东、南、北三面皆驻一军;弘范自领一军与宋军相去里余,并以奏乐为以总攻信号。首先北军乘潮进攻宋军北边失败,李恒等顺潮而退。元军假装奏乐,宋军听后以为元军正在宴会,稍微松懈了。正午时段,张弘范的水师于是正面进攻,接着用布遮蔽预先建成并埋下伏兵的船楼,以鸣金为进攻信号。各伏兵负盾俯伏,在矢雨下驶近宋船。两边船舰接近,元军鸣金撤布交战,一时间连破七艘宋船。宋师大败,元军一路打到宋军中央。这时张世杰早见大势已去,抽调精兵,并已经预先和苏刘义带领余部十余只船舰斩断大索突围而去。赵昺的船在军队中间,四十三岁的陆秀夫见无法突围,便背着八岁的赵昺投海,随行十多万军民亦相继跳海壮烈殉国!《宋史》记载,战后,十余万具尸体浮海。张世杰希望奉杨太后的名义再找宋朝赵氏后人为主,再图后举;但杨太后在听闻宋帝昺的死讯后亦赴海自杀,张世杰将其葬在海边。不久张世杰在大风雨中不幸溺卒于平章山下(约今广东省阳江市西南的海陵岛对开海面)。至此,南宋灭亡。
南宋末年,朝政更加腐败。随着元世祖攻宋的步伐一步步加快,敲响了南宋王朝的丧钟。南宋人民面对国家生死存亡之际,积极抗元,涌现了无数抗元英雄。如面对威逼利诱,誓死不降的文天祥最终英勇就义。