元氏县归属赵国，范围进一步缩小，郡治迁移回汉初的真定县（今正定县）。西晋时期，元氏县也归属赵国，此时统县减少到8个，不过恒山仍在境内上曲阳县西北。南北朝时期，元氏属魏国冀州部常山郡，郡治迁至真定。魏太和六年（232年），封常山郡为赵国，元氏改属赵国。北魏时期，元氏改属赵郡。北齐天宝五年（554年），废元氏县。隋朝时期，隋文帝六年（586年）又置元氏县，属赵州，县城位于槐河北岸（今槐阳镇名称由来）。唐朝，元氏也属赵州。五代十国时期，后梁时属赵州、后周时改属镇州。宋朝庆历八年（1048年）改镇州为真