원래 신라의 고시산군(古尸山郡)인데, 757년(경덕왕 16) 관성군으로 고쳤고 이산(利山)과 현진(縣眞)을 영현(領縣)으로 하였다. 고려 현종 때 경산부(京山府)에 예속시켰다가 인종 때 다시 현령(縣令)을 두었다.
1182년(명종 12) 이민(吏民)이 현령 홍언(洪彦)을 잡아 옥에 가두고 민란을 일으킨 사건으로 폐현되었다. 1313년(충선왕 5) 지옥주사(知沃州事)로 승격시키고, 경산부에 소속되었던 이산ㆍ안읍(安邑)ㆍ양산(陽山) 등 3현을 속현으로 하였다.
1413년(태종 13) 옥천군이라 고치고 경상도에서 충청도 관할로 옮겼다. 1895년(고종 32) 23부제 실시 때 공주부 옥천군이 되었고, 1896년 13도제 실시 때 충청북도의 2등군이 되었다.
경기ㆍ영남ㆍ호남의 각 지방에 이르는 교통의 요지를 이루어, 증약역(增若驛) 등 5역과 화인원(化仁院) 등 7원이 있었다.