明天顺年间于今址设怀远堡,清雍正九年(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个社区。
2011年,撤销双城乡、魏家楼乡合并设立魏家楼镇,撤销石窑沟乡、韩岔乡合并设立韩岔镇,撤销艾好峁乡并入赵石畔镇,撤销南塔乡并入响水镇。调整后,横山县辖12个镇、2个乡:横山镇、石湾镇、高镇镇、武镇镇、党岔镇、响水镇、波罗镇、殿市镇、塔湾镇、赵石畔镇、魏家楼镇、韩岔镇、白界乡、雷龙湾乡。