至元十一年(1274年)六月,元世祖忽必烈委托高丽造大小舰900艘。八月,忽必烈任命忻都为征东都元帅、洪茶丘为右副帅、刘复亨为左副帅,统帅蒙古军、汉军2万人、高丽军5600人,加上高丽水手6700人,(蒙古人为核心,汉人最多,打头阵)共3万2千300人,远征日本。
至元十一年十月三日,元军从高丽合浦(今镇海湾马山浦附近)出发,六日成功登陆对马岛,全歼岛上日守军。十四日傍晚,元军400余人登陆壹岐岛,守护代宗助国父子率领八十骑拦阻,被全歼,元军立赤旗为标记。守军左卫门尉平经高(平内左卫门景隆)率百余骑与元军激战。元军采用密集战术,与“铁炮”(石火矢)等武器,日军不敌,退守城内。次日城破,平经高自杀。元军准备到博多湾登陆,在逼近肥前沿海岛屿时,遭到肥前守护松浦一族(松浦党)的英勇抗击,双方有一番激战,松浦一族死伤惨重。
至元十一年十月十九日,元军成功登陆博多湾(今福冈附近),进逼今津,此带地形不利于大部队展开,距大宰府有一日行程,元军于当晚又撤回到船上,准备次日清晨重新登陆发动进攻。二十日晨(11月26日),元军分二路在博多湾登陆。日本幕府聚集少贰景资、大友赖泰、菊池武房、岛津久经、竹崎季长等的九州诸国部队总数约十万大军。元军西路军在百道原登陆,藤原经资率5000骑前来迎战元军,东路军在博多湾东部的博多箱崎成功登陆,击败守军,占领岸边松林,从背后突袭在百道原同元军作战的日军。日军腹背受敌,死伤惨重,余部向太宰府水城(前代建筑的一座巨大水坝)方向撤退。此时天色已晚,副帅刘复亨中箭受伤,元军停止进攻。当晚,元军召开军事会议,由于后援不足,多数将领主张撤退。于是忻都下令撤退,撤退当晚竟遭到台风侵袭,“会夜大风雨,战舰触岩崖多败”,二十一日晨海面上只剩下一些破碎的木片,元军损失1.3万余人,大多死于这场风暴。最后辗转回到中国的只剩下1万3千500人。
文永之役后,镰仓幕府为了防元军再犯,沿博多湾海岸西从今津东至香椎,修造了约20公里的石垒,以阻止元军登陆,即所谓元寇防垒。
朝廷得报后大喜若狂,龟山上皇巡回各大寺庙神社,到处做“异国降伏”的祈祷。然而年轻的北条时宗却并没有被胜利冲昏头脑,在冷静分析了形势之后,他认为元是大过日本百倍的大国,不会因为一次战役就受到重大损失,停兵罢战。于是,他命令各国守护回国征发全国六十五岁以下的男子充当预备役士兵,各寺院的僧兵也被动员起来保卫国家,加强军备建设,并组织民夫修建环绕博多湾的坚固石堤。同时,他对各国武士也作出了细致的分工:四国、九州地方的武士在本地加强防御;中国地方的武士防守堪称西门锁钥的周防、长门,并随时准备支援四国、九州的抗战;京畿、关东地方的武士驰援京都;奥羽地方的武士也要随时做好战斗准备。
初战失利,忽必烈恼羞成怒,一方面重整旗鼓,准备二度入侵日本,另方面也继续派遣使臣,想要说服日本投降。然而北条时宗的态度更为强硬,建治元年〔1275年〕九月,他在龙之口处斩了元使杜世忠,弘安二年〔1279年〕七月,又在博多处斩了元使周福和栾忠。
恼怒的元帝忽必烈于1281年再次“弘安之役”。
在这次征战中,元军从战术上来说非常成功,利用分进合围击败了日军,但由于副帅受伤攻势减弱。从战略上说,元军失败了。忽必烈发动这场征战的目的是想利用战争使日本臣服,而不是占领日本,所以说这是一场政治战争。要不为什么他只派3万人,而且没有后续部队呢?当然,假使元军那天副帅没有受伤,继续穷追不舍,并攻下了太宰。
可能的是日本并不投降,纠集部队反扑,那么远来疲惫的那么一点点元军在没有第二梯队的支援下,很可能在异国的土地上全军覆没,丧师辱国。忻都应该说是明智的,他选择了主动撤兵。
失原因主要有:第一,太过急躁,负责建造船只的是高丽民工,这些人本来就不堪蒙古人的劳役与驱使,加之蒙古人逼迫太急,致使渡海船只质量低劣,不堪使用;第二,低估了对手,只派出了少量的军队;第三,元军中有很多汉族和金国的部队,这些也是被征服者,是不会为元朝卖命的;第四,没有组织第二梯队,使陆上战斗无法继续进行。
双方的武器装备和战争技术实在相差太远了,六百多年以来,大陆的武器配备已经从纯冷兵器进化到冷热兵器并用的阶段,战术也有了长足的进步,而日本方面几乎和白村江水战时候相差不远。仅以弓箭而论,元军使用的复合弓射程较远,射击周期也比较短,而日方的缠藤弓大多只是单体弓,射程近,过长的箭支也使射击周期延长,再加上元军的箭支上浸过毒药,日军中者无不肌肤糜烂。元军在作战时击鼓鸣金,也使得日军的马匹惊跃狂奔,无法控制。另外,习惯于“一骑打”战术的日本武士在和使用先进集团战术的元军进行短兵作战时,付出的损失更为巨大。
尽管在武器上日方要落后许多,但是为了保卫自己的家乡,他们在作战时表现出了非常顽强的斗志。尤其少贰经资、菊池武房、竹崎季长等人,率领手持剃刀、身披薄弱铠甲的骑马队,不断顽强地向元军阵地发动突击,使得元军的远程武器失去作用。混战中,元军副元帅刘复亨中流箭落马,从而士气大衰,损失惨重的日军趁机撤退,凭藉水城〔白村江战后建筑的一座巨大水坝〕重新布阵。元军害怕遭到日军的夜袭,不敢在陆地上扎营,退回船上进行休整。