周初分封諸候,槐水流域建有詆國,封龍山南麓建在飛龍邑。戰國初屬中山國,趙滅中山后屬趙國。趙國公子元封于此,元氏縣由此而得名。西漢初設置為縣。西漢恒山郡(后改為常山郡)郡治設在元氏。
1943年1月獲鹿縣路南區域并入元氏縣改稱元獲縣,1949年8月劃歸石家莊專區。1958年5月元氏高邑兩縣合并為高元縣,同年12月贊皇并入,改稱元氏縣。1960年5月撤銷石家莊專區,元氏縣改屬石家莊市,1961年復設石家莊專區,元氏復屬之,1962年3月三縣分置,元氏縣恢復原建置。
1996年鄉鎮調整后,元氏縣轄5鎮、11鄉。1997年,元氏縣面積668.4平方千米,人口37.5萬人。轄5個鎮、10個鄉:槐陽鎮、因村鎮、宋曹鎮、南因鎮、南佐鎮、趙同鄉、蘇陽鄉、馬村鄉、北褚鄉、姬村鄉、東張鄉、蘇村鄉、北正鄉、前仙鄉、黑水河鄉。縣政府駐槐陽鎮。
1998年,姬村鄉改姬村鎮,元氏縣轄6個鎮、9個鄉:槐陽鎮、南因鎮、南佐鎮、因村鎮、姬村鎮、宋曹鎮、東張鄉、趙同鄉、馬村鄉、北褚鄉、蘇陽鄉、蘇村鄉、北正鄉、前仙鄉、黑水河鄉。
2000年第五次人口普查,元氏縣常住總人口386518人,其中:槐陽鎮70259人,因村鎮28867人,南佐鎮15788人,宋曹鎮31235人,南因鎮33606人,姬村鎮25788人,馬村鄉32057人,東張鄉33499人,趙同鄉25030人,北褚鄉20917人,蘇村鄉13247人,蘇陽鄉21623人,北正鄉12183人,前仙鄉9186人,黑水河鄉13233人。
2002年,元氏縣面積668.4平方千米,人口約38.7萬人,轄6個鎮、9個鄉,4個社區、208個行政村,縣政府駐槐陽鎮文化路。
2006年末,元氏縣總人口39.61萬人,轄6個鎮、9個鄉、1個辦事處:槐陽鎮、宋曹鎮、南因鎮、殷村鎮、姬村鎮、南佐鎮、東張鄉、蘇陽鄉、趙同鄉、北褚鄉、馬村鄉、北正鄉、蘇村鄉、前仙鄉、黑水河鄉、城區街道辦事處。共有?個社區、208個行政村。
2010年第六次人口普查,元氏縣常住總人口418466人,其中:城區街道31002人,槐陽鎮50859人,因村鎮29344人,南佐鎮15704人,宋曹鎮33601人,南因鎮35344人,姬村鎮27538人,馬村鄉33268人,東張鄉38312人,趙同鄉28165人,北褚鄉20697人,蘇村鄉14154人,蘇陽鄉23608人,北正鄉13189人,前仙鄉9727人,黑水河鄉13954人。
2014年,省民政廳(冀民函[2014]42號)批復同意撤銷北褚鄉,設立北褚鎮。2015年1月26日,省民政廳批復同意撤銷馬村鄉,設立馬村鎮。調整后,全縣轄8個鎮、7個鄉、1個辦事處。