戰國屬秦地。秦于今縣城東6里置成固縣。秦漢屬漢中郡。三國蜀建興三年(229年)諸葛亮于此筑東城。南朝宋改名城固縣,取城池堅固之意。據《方輿勝覽》:“始城而冀其鞏固之意也!北蔽赫寄觊g城固縣治遷壻鄉川(即今址)。
唐武德二年(619年)城固縣改名唐固縣,貞觀二年(628年)復名城固縣,初屬梁州,后屬興元府。元屬興元路。明、清屬漢中府。1914年屬漢中道。1928年直屬省。1949年屬陜南行署區。1951年屬南鄭專區。1953年屬漢中專區。1969年屬漢中地區。1996年屬漢中市。
1996年撤區并鄉設鎮,博望鄉并入城關鎮并更名博望鎮,上道院鄉并入沙河營鎮,毛家嶺鄉并入文川鎮,將謝何鄉并入老莊鎮,陳家灣鄉并入許家廟鎮,垣山鄉并入原公鎮,鮮家廟鄉、南坎營鄉并入上元觀鎮,九壩鄉并入天明鎮,八角鄉、東河鄉并入二里鎮,黃沙鄉并入五堵鎮,孫坪鄉、長龍鄉合并設立孫坪鎮,雙溪鄉、中坪鄉合并為雙溪鎮,水硙鄉、濫壩鄉合并為水硙[wèi,意為磨]鎮,小河鄉、桃源鄉、磚溪鄉合并為小河鎮,寶山撤鄉設鎮,五里鄉并入大盤鄉,呂家村鄉并入五郎廟鄉,鐵路鄉并入三合鄉,板凳鄉并入桔園鄉,墓爺廟、七里店2鄉并入董家營鄉。
1997年,城固縣面積2265平方千米,人口49.4萬人。轄18鎮12鄉:博望鎮、龍頭鎮、沙河營鎮、文川鎮、老莊鎮、柳林鎮、崔家山鎮、許家廟鎮、原公鎮、寶山鎮、上元觀鎮、五堵鎮、孫坪鎮、二里鎮、天明鎮、雙溪鎮、水峣?鎮、小河鎮、五郎廟鄉、桔園鄉、董家營鄉、三合鄉、盤龍鄉、石槽河鄉、黃崗鄉、鹽井鄉、畢家河鄉、高壩鄉、大盤鄉、小盤鄉?h政府駐博望鎮。
2000年第五次人口普查,城固縣常住總人口455408人,其中:博望鎮88411人、龍頭鎮27322人、沙河營鎮16984人、文川鎮15113人、柳林鎮16779人、老莊鎮33041人、崔家山鎮16640人、許家廟鎮25362人、原公鎮23384人、上元觀鎮29023人、天明鎮12488人、二里鎮11409人、五堵鎮9691人、孫坪鎮7677人、雙溪鎮3174人、水磨鎮4718人、小河鎮4845人、寶山鎮13676人、五郎廟鄉11732人、桔園鄉11170人、三合鄉16884人、高壩鄉6429人、董家營鄉24434人、大盤鄉2662人、畢家河鄉1558人、鹽井鄉5526人、黃崗鄉6574人、小盤鄉5617人、盤龍鄉1967人、石槽河鄉1118人。
2001年,撤銷許家廟鎮、桔園鄉合并設立桔園鎮,撤銷石槽河鄉并入盤龍鄉,撤銷黃崗鄉并入二里鎮,撤銷畢家河鄉并入老莊鎮,撤銷高壩鄉并入天明鎮,撤銷小盤鄉并入大盤鄉。調整后,城固縣轄18個鎮、6個鄉:博望鎮、龍頭鎮、沙河營鎮、文川鎮、柳林鎮、老莊鎮、崔家山鎮、桔園鎮、原公鎮、上元觀鎮、天明鎮、二里鎮、五堵鎮、孫坪鎮、雙溪鎮、水磨鎮、小河鎮、寶山鎮、五郎廟鄉、三合鄉、董家營鄉、大盤鄉、鹽井鄉、盤龍鄉。
2010年第六次人口普查,城固縣常住總人口464903人,其中:博望鎮116375人,龍頭鎮26277人,沙河營鎮16224人,文川鎮14660人,柳林鎮16963人,老莊鎮28605人,崔家山鎮18799人,桔園鎮33179人,原公鎮18859人,上元觀鎮29395人,天明鎮18434人,二里鎮17422人,五堵鎮10596人,孫坪鎮7574人,雙溪鎮2890人,水磨鎮3875人,小河鎮4215人,寶山鎮13583人,五郎廟鄉11814人,三合鄉17142人,董家營鄉23704人,大盤鄉6556人,鹽井鄉5249人,盤龍鄉2513人。
2011年,撤銷盤龍鎮并入小河鎮,撤銷水磨鎮并入雙溪鎮,撤銷孫坪鎮并入五堵鎮,撤銷鹽井鄉并入天明鎮,撤銷大盤鄉并入二里鎮,撤銷寶山鎮并入原公鎮,撤銷五郎廟鄉設立五郎廟鎮,撤銷董家營鄉設立董家營鎮,撤銷三合鄉設立三合鎮。調整后,城固縣轄18個鎮:博望鎮、龍頭鎮、沙河營鎮、文川鎮、柳林鎮、老莊鎮、崔家山鎮、桔園鎮、原公鎮、上元觀鎮、天明鎮、二里鎮、五堵鎮、雙溪鎮、小河鎮、三合鎮、董家營鎮、五郎廟鎮。
2012年末,城固縣面積2217.3平方千米,戶籍人口536017人,常住人口46.51萬人。2013年末,城固縣轄18個鎮,共有17個社區、310個行政村,縣政府駐博望鎮。
2015年,撤銷崔家山鎮,并入柳林鎮;撤銷博望鎮,設立博望街道;撤銷五郎廟鎮,設立蓮花街道。撤并78個行政村,保留232個行政村。調整后,全縣轄2個街道、15個鎮。