唐朝后期活动在今陕、甘、宁的党项族,北宋初年在首领李继迁的率领下,与宋王朝进行对抗。1002年,李继迁攻下灵州,称西平府,迁都于此。1004年,李继迁卒,子德明即位,与宋议和,并把目标转向河西走廊。1028年,灭甘州回鹘;1030年,瓜州王以千骑降。宋仁宗景祐三年(1036),西夏攻占敦煌,设瓜州西平监军司管辖此地。西夏的地方行政组织也分州(府、军)、县(城、堡)二级制,敦煌仍称沙州。当时的西夏,主要是东向与宋、辽争战,无暇西顾。所以这时西夏对沙州的控制还很薄弱,沙州地方首领还保持着一定的独立性,甚至于归义军的使臣仍向宋朝贡了七次,这说明在西夏统治沙州的很长一段时间内,归义军仍有很大的势力。
1038年,李元昊称帝,建大夏国,史称西夏。大概在1052年以后,西夏加强了对瓜沙二州的直接控制。1062年,西夏惠宗为了和北宋进行战争,西夏曾向东迁徙敦煌民众,使敦煌受到很大的削弱。1109年,瓜、沙、肃三州发生饥荒,百姓流亡他乡。此后,随着海上交通的发展及陆上丝路的衰落,敦煌失去了丝路贸易中转站的地位。
蒙古兴起后,出征西夏。1205年,侵扰瓜沙地区。1224年,蒙古骑兵围攻沙州半年。1227年3月,蒙古汗国占领敦煌,废弃沙州建置,划入八都大王的封地,即归入成吉思汗长孙拔都的封地。同年6月,蒙古灭西夏。
1271年,元朝建立后不久,马可波罗途经沙州。1277年,元朝统一中国后,为了加强中央集权,实行行中书省制度。地方行政组织有省、路、府、州、县各级,元朝重设沙州,隶肃州,归元朝中央政府管辖,授当地百姓田种、农具。1280年,沙州升格为路,设总管府,统瓜沙二州,直接肃属于甘肃行中书省。《元史·地理志》载:“沙州路……元太祖二十二年,破其城,以隶八都大王。至元十四年复立州,十七处升为沙州路总管府,瓜州隶焉。”其下注曰:“沙州去肃州千五百里,内附贫民,欲乞粮沙州,必须白之肃州,然后给予,朝迁廷以其不便,故升沙州为路。”元成宗时,为开发河西,曾在敦煌等地实行屯田,大德七年(1303),御史台臣言:“瓜、沙二州,自昔为边镇重地,今大军屯驻甘州,使官民反居边外,非宜。乞以蒙古军万人分镇险隘,立屯田以供军实,为便。”敦煌成为元朝与西北藩王斗争的重要基地。但元朝西向的交通要道已不再通过敦煌,敦煌在地理上失去了以往的优势。1291—1292年,元朝移瓜沙州居民入肃州,敦煌的地位日趋衰微。
1368年明朝建立。1372年,明将冯胜经略河西,取得初步胜利,但敦煌仍在元朝残部的控制之下。为了防止蒙古东进,冯胜在肃州西七十里处建嘉峪关,成为明朝西部边关,敦煌被弃置关外。1391年,明朝出兵哈密,沙州蒙古王子归顺明朝。1404年,明朝设沙州卫,仍用蒙古后裔统辖。1446年,沙州内乱,明将任礼率军入沙州,把沙州卫属下二百余户迁入关内,沙州仍由蒙古后裔占据。以后吐鲁番势力强大,1515年攻沙州蒙古,1528年占领沙州。1524年,明朝关闭嘉峪关,1529年放弃哈密。敦煌在明朝初年就已成为牧区,至此更甚。
1644年明亡,清兵入关,定都北京。康熙时平定新疆。1723年,雍正帝在敦煌设沙州所,1725年升格为卫,并迁2400余户来此屯田。沙州旧城被水冲毁,此时在东面筑新城。乾隆二十年(1760),改沙州卫为敦煌县,隶安肃道。敦煌在清朝时通过移民、屯田、垦荒等措施略有恢复,但没有太大起色。