據《綏德州志》:吳堡,“金縣名,本宋吳堡寨,縣從寨名也”。公元431年置政和縣,取政通人和之意。北宋元豐四年(1081年)于今宋家川鎮東北吳堡城設吳堡砦,金正大三年(1226年)升吳堡砦為吳堡縣,屬葭州。元至元二十八年(1291年)升為吳州,元貞元年(1295年)復降為吳堡縣。
清屬綏德州。1913年屬榆林道。1928年直屬省。1936年縣治移今址。1940年屬陜甘寧邊區綏德分區。1950年屬綏德專區。1956年屬榆林專區。1958年省吳堡縣入綏德縣,1961年復設。1969年屬榆林地區。1999年屬榆林市。
1996年,吳堡縣面積418.5平方千米,人口7.5萬人,轄1鎮9鄉:宋家川鎮、張家墕鄉、寇家塬鄉、薛下村鄉、郭家溝鄉、辛家溝鄉、于家溝鄉、丁家灣鄉、岔上鄉、張家山鄉。縣政府駐宋家川鎮。
1997年,辛家溝鄉改為辛家溝鎮,郭家溝鄉改為郭家溝鎮,寇家塬鄉改為寇家塬鎮。調整后,吳堡縣轄4個鎮、6個鄉。
2000年第五次人口普查,全縣總人口72781人,其中:宋家川鎮18406人、辛家溝鎮6421人、郭家溝鎮4416人、寇家塬鎮7122人、張家墕鄉6709人、于家溝鄉5259人、張家山鄉7555人、岔上鄉5227人、丁家灣鄉5435人、薛下村鄉6231人。
2001年,撤銷張家墕鄉并入宋家川鎮,撤銷于家溝鄉并入郭家溝鎮。調整后,吳堡縣轄4個鎮、4個鄉:宋家川鎮、辛家溝鎮、郭家溝鎮、寇家塬鎮、張家山鄉、岔上鄉、丁家灣鄉、薛下村鄉。
2002年,將郭家溝鎮宋家坡、李常家山、李畔咀、張興等4個村劃歸辛家溝鎮管轄。2003年,吳堡縣轄宋家川鎮、寇家塬鎮、郭家溝鎮、辛家溝鎮4個鎮和薛下村鄉、岔口鄉、工家灣鄉、張家山鄉4個鄉,共有221個行政村、5個社區。
2011年,撤銷丁家灣鄉、岔上鄉合并設立岔上鎮,撤銷薛下村鄉并入寇家塬鎮,撤銷張家山鄉設立張家山鎮。調整后,吳堡縣轄6個鎮:宋家川鎮、辛家溝鎮、郭家溝鎮、寇家塬鎮、張家山鎮、岔上鎮。