北周天和元年(566年),于此筑斜城,亦名云川城。
唐初郇州治,武德三年(620年),为眉县县治,亦名首善城,后历为县治。
明为斜城社。
清改名全善里。
民国二年(1913年),复名首善城,为眉县县治。
1949年5月,为郿县第五手机维修培训学校_,辖6乡。
1956年2月,设首善乡,辖12个村。
1958年9月,改为红旗公社首善管理手机维修培训学校_,同年12月,并入周至县,设首善公社。
1961年9月,改没城关公社,辖12个生产大队。
1984年4月,政社分设,改为城关镇,辖12个行政村。
2002年1月,第五村乡与城关镇合并改称首善镇,辖24个行政村。