公元1270年,元朝使节第五次到达日本,传达了忽必烈的旨意:如果日本不向元朝朝贡,即将出兵,当时18岁的日本执政者北条时宗(1251~1284)坚决拒绝这一要求。下令西国的守护和地头准备防御。
忽必烈闻此讯后,抑制不住五次遣使、五次被拒绝的愤怒与耻辱,下令准备军队、船只、粮饷,向日本发起战争攻势。日本军队也在北条时宗的命令下严阵以待。
公元1274年,元军共九百艘战舰,载士卒一万五千入侵日本,元朝军队仅仅在战争开始阶段取得了一些战果。以后则屡战屡败。尽管日本人的武器无法与蒙古人的长距离武器相匹敌,但他们擅长于面对面的搏斗,面对第一次“蒙古来袭”,日本镰仓幕府调集部分正规军迎战,九州沿海各藩也紧急组织武士和民兵参战。
惨烈的战斗进行了二十多天,日本人战术较为落后,在开始的战斗中蒙受巨大伤亡,但他们仍然成功地阻止了元军的推进。在相持了几天后,日本人渐渐适应了蒙古人的战术,于是开始反击。主要由武士组成的日本重骑贴身近战,在蒙古人的弓箭手的支援下冒着箭雨列阵冲击敌人,与敌军贴身近战,使蒙古人的弓箭优势失效。
刘复亨在激战中阵亡,元军折损大半后退回海滩依托回回炮防守。至此元军伤亡惨重,进展无望,他们的败局已不可避免,由于箭和给养都即将用尽,元军无力继续守住阵地,他们只得上船撤退。在返回朝鲜的路上,元军的舰队遭风暴袭击,遭受了一些损失,不过大部分船只安全回国蒙古人第一次东征日本以失败告终。蒙古人战无不胜的神话破灭。
忽必烈听到征服日本失败的消息后再次派遣重要使者携书前往日本,并以强硬的态度要求日本纳贡,否则将诉诸于武力。但日本政府拒绝了元朝统治者的要求。公元1281年结集南宋新投降的十万人组成一支大军远征日本高丽国王也为元朝提供了1万军队,组成二十万军队。
北方出海的舰队于五月底如日本人所料抵达博多湾,在等待南方舰队期间,蒙古人轻易攻占了博多湾的几个岛屿,岛上的居民全部遭屠杀,岛上的建筑物也被毁坏焚毁。六月上旬,南方舰队抵达,两支庞大舰队在九州外海会合,之后元军开始登陆作战,登陆地点九龙山距上次战争主力部队登陆的地点不远。
这次远征军遇到了更顽强有效的抵日本军队以石墙为掩护,不断击退元军的进攻,还伺机组织反冲锋。日本人最成功的一次反击击溃了高丽军主力,高丽军统帅洪茶丘被俘杀,几名蒙古高级指挥官相继阵亡。激烈的战斗持续了一个多月,远征军的损失已超过三分之一,但依然不能突破石墙。
到七月下旬,元军的粮草和箭已基本告曁,而一场风暴则摧毁了元军的战舰。此时九龙山的海滩上尚留有近十万元军,三天后,日本人开始反攻,将残存的元军驱赶至一处名为八角岛的狭窄地区,然后纵兵攻击。
元军大部被杀,剩余的两万多人做了俘虏,日本人按照蒙古人的标准把俘虏分四等,前三等,即蒙古人,女真人,高丽人杀掉。四等的唐人(汉人)免死后成为部民