古称林湖,五代置偏头砦,元改偏头关,清改称偏关县。据《天下郡国利病书》:“偏头关东连丫角山,西通黄河,与套虏仅隔一水,其地东仰西伏,故名。”据《偏关县志》,城临偏头关,以关名县。
辽于今县境东部置宁边州,属西南招讨司。金正隆三年(1158)析置宁边县为州治。元至元四年(1338)废。明成化二年(1466)置偏头关千户所,治今城关,属太原府。清雍正十三年(1735)升偏关县,属宁武府。民国初年属雁门道,道废后直属省。
1949年属兴县专区。1952年属忻县专区。1958年废入河曲县。1960年复置,属晋北专区。1961年复属忻县专区。1967年属忻县地区。1983年属忻州地区。2000年属地级忻州市。2000年属忻州市。
2000年第五次人口普查,偏关县常住总人口112324人,其中,城关镇37595人,天峰坪镇9083人,老营镇7069人,万家寨镇6346人,窑头乡9004人,大石洼乡3541人,楼沟乡6006人,曹家村乡3951人,尚峪乡4651人,南堡子乡4773人,教儿埝乡1210人,水泉乡5173人,陈家营乡7055人,马家埝乡2373人,黄龙池乡4494人。
2001年区划调整后,全县辖4个镇、6个乡:新关镇、天峰坪镇、老营镇、万家寨镇、窑头乡、楼沟乡、尚峪乡、南堡子乡、水泉乡、陈家营乡。县政府驻新关镇。
2010年第六次人口普查,偏关县常住总人口112111人,其中,新关镇54981人,天峰坪镇6337人,老营镇6524人,万家寨镇7451人,窑头乡11371人,楼沟乡8559人,尚峪乡4059人,南堡子乡3559人,水泉乡3653人,陈家营乡5617人。
2015年末,偏关县辖4个镇、6个乡(合计10个),5个居委会、248个村委会(合计253个)。