初元年(107),属犍为蜀国朱提地;蜀汉建安九年(214),在原犍为属国的基础上,设置朱提郡;建兴三年(225),“蜀汉朱提郡领朱提、汉阳、堂琅、南昌、南广五县,治朱提”,朱提县辖今昭通、鲁甸、彝良、大关、永善等地。西晋泰始六年(270),县境属益州朱提郡朱提县地,太安二年(303),属宁州朱提郡朱提县地;东晋元帝建武元年(317),属宁州朱提郡辖地直至南梁;梁太清二年(548),南梁王朝终止派遣宁州刺史,宁州地区为爨氏“窃据”,县境荒废。北周孝闵帝元年(557),益州刺史兼理宁州军事后,将宁州改为“南宁州”,此时,大关属南宁州朱提郡地。隋开皇四年(584),大关属南宁州总管府恭州辖地。唐武德元年(618)置协州,领东安、西安、湖津3县,西安县治所在今大关县青龙乡双河场老街;湖津县治所在今大关县天星乡火烧寨。这是今县境置县的开始。后从协州分置靖州统靖川、分协两县,城址分别在今县境悦乐坝和翠华老城。唐南诏
时,今县境为东爨阿旁部,属拓东节度管辖。宋大理时,县境属乌蒙部地。元世祖至元十五年(1278)五月乌蒙路隶云南行省,乌蒙路(今昭通)辖归化州(今大关县)、土僚长官司(今盐津县),此时,县境属云南行省乌蒙路归化州。不久乌蒙路改为乌蒙军民总管府,后又改为乌蒙军民宣抚司,至元二十四年升为乌撒、乌蒙宣慰司,领有乌蒙撒路、乌蒙路、东川路、芒布路等地,今大关县地归属未变。顺帝至元元年(1335)九月,诏以乌撒乌蒙之地隶四川行省,县境随属四川行省乌蒙路辖地。明洪武九年(1376)六月,大关属四川布政司,今大关县地属云南布政司乌蒙府辖地。洪武十六年(1383)正月乌蒙三府隶四川布政使司,县境又属四川乌蒙府辖地。
清雍正五年(1727)诏乌蒙、镇雄二府归滇辖,县境归属云南省乌蒙府辖地。雍正六年置大关厅,设通判驻其地。
中华民国2年(1913)改称大关。初属滇中道,后废道,直属于省。
民国6年将县境黎山以北划出14乡新设盐津县。
民国32年大关县改属昭通行政督察专员公署管辖。
中华人民共和国成立后,大关于1950年4月解放,属云南省昭通专区管辖。
1958年10月4日盐津、大关并县,称大关县,隶属不变。
1961年4月28日,大关、盐津分县,各复原名,大关隶属不变。