北周天和元年(566年),于此筑斜城,亦名云川城。
唐初郇州治,武德三年(620年),為眉縣縣治,亦名首善城,后歷為縣治。
明為斜城社。
清改名全善里。
民國二年(1913年),復名首善城,為眉縣縣治。
1949年5月,為郿縣第五區,轄6鄉。
1956年2月,設首善鄉,轄12個村。
1958年9月,改為紅旗公社首善管理區,同年12月,并入周至縣,設首善公社。
1961年9月,改沒城關公社,轄12個生產大隊。
1984年4月,政社分設,改為城關鎮,轄12個行政村。
2002年1月,第五村鄉與城關鎮合并改稱首善鎮,轄24個行政村。