至元十一年(1274年)六月,元世祖忽必烈委托高麗造大小艦900艘。八月,忽必烈任命忻都為征東都元帥、洪茶丘為右副帥、劉復亨為左副帥,統帥蒙古軍、漢軍2萬人、高麗軍5600人,加上高麗水手6700人,(蒙古人為核心,漢人最多,打頭陣)共3萬2千300人,遠征日本。
至元十一年十月三日,元軍從高麗合浦(今鎮海灣馬山浦附近)出發,六日成功登陸對馬島,全殲島上日守軍。十四日傍晚,元軍400余人登陸壹岐島,守護代宗助國父子率領八十騎攔阻,被全殲,元軍立赤旗為標記。守軍左衛門尉平經高(平內左衛門景隆)率百余騎與元軍激戰。元軍采用密集戰術,與“鐵炮”(石火矢)等武器,日軍不敵,退守城內。次日城破,平經高自殺。元軍準備到博多灣登陸,在逼近肥前沿海島嶼時,遭到肥前守護松浦一族(松浦黨)的英勇抗擊,雙方有一番激戰,松浦一族死傷慘重。
至元十一年十月十九日,元軍成功登陸博多灣(今福岡附近),進逼今津,此帶地形不利于大部隊展開,距大宰府有一日行程,元軍于當晚又撤回到船上,準備次日清晨重新登陸發動進攻。二十日晨(11月26日),元軍分二路在博多灣登陸。日本幕府聚集少貳景資、大友賴泰、菊池武房、島津久經、竹崎季長等的九州諸國部隊總數約十萬大軍。元軍西路軍在百道原登陸,藤原經資率5000騎前來迎戰元軍,東路軍在博多灣東部的博多箱崎成功登陸,擊敗守軍,占領岸邊松林,從背后突襲在百道原同元軍作戰的日軍。日軍腹背受敵,死傷慘重,余部向太宰府水城(前代建筑的一座巨大水壩)方向撤退。此時天色已晚,副帥劉復亨中箭受傷,元軍停止進攻。當晚,元軍召開軍事會議,由于后援不足,多數將領主張撤退。于是忻都下令撤退,撤退當晚竟遭到臺風侵襲,“會夜大風雨,戰艦觸巖崖多敗”,二十一日晨海面上只剩下一些破碎的木片,元軍損失1.3萬余人,大多死于這場風暴。最后輾轉回到中國的只剩下1萬3千500人。
文永之役后,鐮倉幕府為了防元軍再犯,沿博多灣海岸西從今津東至香椎,修造了約20公里的石壘,以阻止元軍登陸,即所謂元寇防壘。
朝廷得報后大喜若狂,龜山上皇巡回各大寺廟神社,到處做“異國降伏”的祈禱。然而年輕的北條時宗卻并沒有被勝利沖昏頭腦,在冷靜分析了形勢之后,他認為元是大過日本百倍的大國,不會因為一次戰役就受到重大損失,停兵罷戰。于是,他命令各國守護回國征發全國六十五歲以下的男子充當預備役士兵,各寺院的僧兵也被動員起來保衛國家,加強軍備建設,并組織民夫修建環繞博多灣的堅固石堤。同時,他對各國武士也作出了細致的分工:四國、九州地方的武士在本地加強防御;中國地方的武士防守堪稱西門鎖鑰的周防、長門,并隨時準備支援四國、九州的抗戰;京畿、關東地方的武士馳援京都;奧羽地方的武士也要隨時做好戰斗準備。
初戰失利,忽必烈惱羞成怒,一方面重整旗鼓,準備二度入侵日本,另方面也繼續派遣使臣,想要說服日本投降。然而北條時宗的態度更為強硬,建治元年〔1275年〕九月,他在龍之口處斬了元使杜世忠,弘安二年〔1279年〕七月,又在博多處斬了元使周福和欒忠。
惱怒的元帝忽必烈于1281年再次“弘安之役”。
在這次征戰中,元軍從戰術上來說非常成功,利用分進合圍擊敗了日軍,但由于副帥受傷攻勢減弱。從戰略上說,元軍失敗了。忽必烈發動這場征戰的目的是想利用戰爭使日本臣服,而不是占領日本,所以說這是一場政治戰爭。要不為什么他只派3萬人,而且沒有后續部隊呢?當然,假使元軍那天副帥沒有受傷,繼續窮追不舍,并攻下了太宰。
可能的是日本并不投降,糾集部隊反撲,那么遠來疲憊的那么一點點元軍在沒有第二梯隊的支援下,很可能在異國的土地上全軍覆沒,喪師辱國。忻都應該說是明智的,他選擇了主動撤兵。
失原因主要有:第一,太過急躁,負責建造船只的是高麗民工,這些人本來就不堪蒙古人的勞役與驅使,加之蒙古人逼迫太急,致使渡海船只質量低劣,不堪使用;第二,低估了對手,只派出了少量的軍隊;第三,元軍中有很多漢族和金國的部隊,這些也是被征服者,是不會為元朝賣命的;第四,沒有組織第二梯隊,使陸上戰斗無法繼續進行。
雙方的武器裝備和戰爭技術實在相差太遠了,六百多年以來,大陸的武器配備已經從純冷兵器進化到冷熱兵器并用的階段,戰術也有了長足的進步,而日本方面幾乎和白村江水戰時候相差不遠。僅以弓箭而論,元軍使用的復合弓射程較遠,射擊周期也比較短,而日方的纏藤弓大多只是單體弓,射程近,過長的箭支也使射擊周期延長,再加上元軍的箭支上浸過毒藥,日軍中者無不肌膚糜爛。元軍在作戰時擊鼓鳴金,也使得日軍的馬匹驚躍狂奔,無法控制。另外,習慣于“一騎打”戰術的日本武士在和使用先進集團戰術的元軍進行短兵作戰時,付出的損失更為巨大。
盡管在武器上日方要落后許多,但是為了保衛自己的家鄉,他們在作戰時表現出了非常頑強的斗志。尤其少貳經資、菊池武房、竹崎季長等人,率領手持剃刀、身披薄弱鎧甲的騎馬隊,不斷頑強地向元軍陣地發動突擊,使得元軍的遠程武器失去作用。混戰中,元軍副元帥劉復亨中流箭落馬,從而士氣大衰,損失慘重的日軍趁機撤退,憑藉水城〔白村江戰后建筑的一座巨大水壩〕重新布陣。元軍害怕遭到日軍的夜襲,不敢在陸地上扎營,退回船上進行休整。