但高丽人并未因此而臣服,高丽民间的反蒙浪潮从未停止,许多地方的蒙古达鲁花赤相继被杀。为避免蒙古的报复,高丽权臣崔怡决定迁都江华岛。被激怒的蒙古大军又一次入侵高丽。蒙古军队虽然陆上无敌,无奈却不习水战,而高丽朝廷则是坚壁清野,誓死不出岛。到1257年止,蒙古先后遣军7次征伐高丽,但都无功而返。当然,金银财宝和美女、工匠倒是抢了不少。虽然高丽国拒不投降,但蒙古大军的多次讨伐给高丽百姓造成了深重的灾难。不少地方因惧怕蒙古军队屠城,纷纷举城归附蒙古。高丽有不少大臣也对与蒙古对抗到底的政策提出了质疑。同时,蒙古也在筹划另立高丽入质蒙古的质子为新君,而这一旦成为既成事实,高丽朝廷便面临边缘化的危险。1258年,高丽众大臣发动政变,杀死了主张弃陆保岛的权臣崔氏,出陆降蒙。1259年,蒙古与高丽达成和解协议,蒙军撤出高丽,高丽王室也承诺移居陆地,两国战争状态终于结束。
1259年,高丽世子应蒙古要求入朝,前往正在四川前线督战的蒙古大汗蒙哥军营。当他到达六盘山时,得到蒙哥7月在钓鱼城去世的消息(正史说是染病,也有说是攻城时被宋军打伤致死的),于是改道向南,正巧遇见从前线返回的忽必烈。此时忽必烈正打算回去与阿里不哥争夺汗位,高丽世子此时前来觐见,无疑是一个吉兆。他十分高兴,对部下说:“高丽远在万里之外,即使是英明如唐太宗,亲征也不能使其臣服,现在高丽世子主动来归附于我,这岂不是天意让我即大汗之位。”于是,忽必烈让王与自己一起北行,共同抵达开平。不久,高丽高宗去世,高丽世子回国即位,这就是高丽元宗。但1260年元宗继位后,国内并不安定,权臣林衍和金俊一直把持着朝政。而由于蒙古多次入侵高丽,高丽国内的反元情绪不断高涨,对这位蒙古人所立的国王本就十分不满,加上忽必烈南征南宋的时候,高丽又被迫为蒙军制造战舰,提供粮草,国人对亲元的元宗的不满达到了顶点。在这种情况下,1269年,高丽权臣林衍趁机废掉元宗,拥立安庆公为国王。得知消息的忽必烈立刻派使臣前去责问。在蒙古强大的军事压力下,林衍被迫拥元宗复位。为了巩固高丽王室的地位,高丽元宗决定与元王室联姻,借助蒙古的力量保全王室,同时也好阻止蒙古吞并高丽,维持半独立的地位。1271年,高丽元宗再次遣使赴元,为高丽世子王谌请婚,同时遣世子王谌入元为质。忽必烈同意了高丽元宗的联姻请求,决定以自己13岁的幼女忽都鲁揭里迷失(后封齐国公主)下嫁已经入元为质的王谌。公主年幼,直到3年后婚礼才举行。。婚后一个月,元宗就去世了,王谌归国即位,是为高丽忠烈王。
与元朝的联姻让高丽王室有了一个意外的收获。原本对高丽国王粗暴无礼、颐指气使的元朝使臣和达鲁花赤们现在居然也开始讲起礼仪来,对忠烈王格外尊重,而这是元宗在世时想也不敢想的。显然这都与忠烈王成了大元皇帝忽必烈的附马有关。尝到甜头的高丽王室于是将娶个元朝公主作为保住王位和性命的首要任务。高丽忠烈王之后,除忠穆王和忠定王因在位时过于年幼,不宜娶妻外,其他国王娶的都是元朝的公主,其中忠肃王因丧偶故,前后迎娶了3位元朝公主。不过,显然忽必烈之后的元朝皇帝对高丽并不是十分看重,这些“公主”都不是皇帝的亲生女儿。尽管如此,这些元朝公主们在高丽还是享有极大的特权。