戰國時為趙邑。西漢置靈丘縣,屬代郡,故治在今城關東5千米,相傳以趙武靈王困死沙丘葬此,故名。東漢光和初年別屬中山國,尋廢。北魏復置,屬北靈丘郡,且為郡治,又于縣境置莎泉縣,亦屬北靈丘郡,故治在今縣境西。東魏天平二年(535)于靈丘縣置靈丘郡,縣屬之,徙治今縣城。北齊廢莎泉縣入靈丘郡。北周于縣境置大昌縣,屬蔚州,且為州治,故治在今縣境南。隋開皇初年廢靈丘郡,并大昌縣入靈丘縣。大業初年廢蔚州,縣改屬雁門郡。隋末陷廢。
唐武德六年(623)復置靈丘縣,先后寄治今陽曲、繁峙、忻州等縣、市,貞觀五年(631)還故治,屬蔚州,且為州治。金貞佑二年(1214)升靈丘縣為成州,屬西京路。元復為靈丘縣,仍屬蔚州。明、清屬大同府。民國初年屬雁門道,道廢后直屬省。1949年屬察哈爾省。1952年復歸山西省,屬雁北專區。1958年屬晉北專區。1961年復屬雁北專區。1967年屬雁北地區。1993年屬大同市。
1997年,靈丘縣轄3鎮16鄉:城關鎮、東河南鎮、上寨鎮、高家莊鄉、落水河鄉、招柏鄉、柳科鄉、下關鄉、王成莊鄉、石家田鄉、白崖臺鄉、趙北鄉、史莊鄉、三樓鄉、獨峪鄉、銀廠鄉、狼牙溝鄉、紅石塄鄉、唐之洼鄉。縣政府駐城關鎮。
2000年第五次人口普查,靈丘縣總人口209713人,其中:城關鎮54787人,東河南鎮26528人,上寨鎮14534人,落水河鄉20012人,唐之洼鄉7298人,高家莊鄉12181人,史莊鄉6836人,王城莊鄉10310人,趙北鄉5581人,石家田鄉8870人,柳科鄉7495人,白崖臺鄉5723人,招柏鄉3334人,紅石塄鄉4301人,狼牙溝鄉1394人,下關鄉8106人,獨峪鄉4520人,三樓鄉3684人,銀廠鄉4219人。
2001年,城關鎮、高家莊鄉、唐之洼鄉設立武靈鎮;東河南鎮、銀廠鄉合并設立東河南鎮;上寨鎮、狼牙溝鄉設立上寨鎮;落水河鄉、招柏鄉設立落水河鄉;趙北鄉、王成莊鄉合并設立趙北鄉;獨峪鄉、三樓鄉設立獨峪鄉。區劃調整后,全縣轄3個鎮、9個鄉:武靈鎮、東河南鎮、上寨鎮、落水河鄉、史莊鄉、趙北鄉、石家鄉、柳科鄉、白崖臺鄉、紅石塄鄉、下關鄉、獨峪鄉。縣政府駐武靈鎮。