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