明天順年間于今址設懷遠堡,清雍正九年(1731年)升懷遠堡為懷遠縣,屬榆林府。1914年改名橫山縣,以境內橫山得名,屬榆林道。1928年直屬省。1946年陜甘寧邊區橫山縣由乾岔移治今殿市鎮。1949年屬榆林分區。1950年屬榆林專區。1956年移治李家 (即今址)。1958年省入榆林、米脂二縣,1961年復設。1969年屬榆林地區。1999年屬榆林市。
1997年,高鎮鄉改為高鎮,黨岔鄉改為黨岔鎮,武鎮鄉改為武鎮,響水鄉改為響水鎮,趙石畔鄉改為趙石畔鎮,塔灣鄉改為塔灣鎮。調整后,橫山縣轄10個鎮、11個鄉:橫山鎮、石灣鎮、高鎮、殿市鎮、響水鎮、黨岔鎮、武鎮、波羅鎮、趙石畔鎮、塔灣鎮、魏家樓鄉、石窯溝鄉、韓岔鄉、五龍山鄉、南塔鄉、白界鄉、王有地鄉、付家坪鄉、雷龍灣鄉、雙城鄉、艾好峁鄉。總面積4084平方千米,總人口約30萬人,縣政府駐橫山鎮。
2000年第五次人口普查,橫山縣常住總人口294674人,其中:橫山鎮52180人、石灣鎮15930人、高鎮18682人、武鎮15657人、黨岔鎮17742人、響水鎮12734人、波羅鎮17119人、殿市鎮11132人、塔灣鎮13308人、趙石畔鎮13259人、魏家樓鄉10844人、雙城鄉5567人、石窯溝鄉14821人、付家坪鄉4686人、王有地鄉6396人、白界鄉10737人、南塔鄉10372人、五龍山鄉7500人、韓岔鄉16900人、艾好峁鄉10069人、雷龍灣鄉9039人。
2001年,撤銷付家坪鄉并入武鎮鎮,撤銷王有地鄉并入黨岔鎮,撤銷五龍山鄉并入殿市鎮。調整后,橫山縣轄10個鎮、8個鄉:橫山鎮、石灣鎮、高鎮鎮、武鎮鎮、黨岔鎮、響水鎮、波羅鎮、殿市鎮、塔灣鎮、趙石畔鎮、魏家樓鄉、雙城鄉、石窯溝鄉、白界鄉、南塔鄉、韓岔鄉、艾好峁鄉、雷龍灣鄉。
2003年,橫山縣轄橫山鎮、石灣鎮、殿市鎮、波羅鎮、響水鎮、黨岔鎮、塔灣鎮、趙石畔鎮、高鎮、武鎮10個鎮和白界鄉、雷龍灣鄉、南塔鄉、韓岔鄉、石窯溝鄉、艾好峁鄉、魏家樓鄉、雙城鄉8個鄉,共有358個行政村、6個社區。
2010年第六次人口普查,橫山縣常住總人口288053人,其中:橫山鎮86246人,石灣鎮12942人,高鎮17828人,武鎮14367人,黨岔鎮19396人,響水鎮10319人,波羅鎮15539人,殿市鎮17172人,塔灣鎮8634人,趙石畔鎮7885人,魏家樓鄉7798人,雙城鄉4335人,石窯溝鄉8923人,白界鄉22170人,南塔鄉8644人,韓岔鄉12226人,艾好峁鄉5837人,雷龍灣鄉7792人。
2011年,撤銷雙城鄉、魏家樓鄉合并設立魏家樓鎮,撤銷石窯溝鄉、韓岔鄉合并設立韓岔鎮,撤銷艾好峁鄉并入趙石畔鎮,撤銷南塔鄉并入響水鎮。調整后,橫山縣轄12個鎮、2個鄉:橫山鎮、石灣鎮、高鎮鎮、武鎮鎮、黨岔鎮、響水鎮、波羅鎮、殿市鎮、塔灣鎮、趙石畔鎮、韓岔鎮、魏家樓鎮、白界鄉、雷龍灣鄉。
2012年末,橫山縣面積4299.1平方千米,戶籍人口370803人,常住人口28.95萬人。2013年末,橫山縣轄12個鎮、2個鄉,共有6個社區、362個行政村,縣政府駐橫山鎮。
2015年,撤銷橫山鎮,設立橫山街道;撤銷雷龍灣鄉,設立雷龍灣鎮;撤銷白界鄉,設立白界鎮。調整后,橫山縣轄1個街道、13個鎮:橫山街道、石灣鎮、高鎮鎮、武鎮鎮、黨岔鎮、響水鎮、波羅鎮、殿市鎮、塔灣鎮、趙石畔鎮、韓岔鎮、魏家樓鎮、雷龍灣鎮、白界鎮。