본래 신라의 대병부곡(大幷部曲)이었는데, 고려 초에 공성현(功城縣)이라 하였고 현종 때상주군에 예속되었다. 1895년공동면(功東面)으로 하였다가 1914년 행정구역개편에 따라 공성면으로 이름을 바꾸었다.
이곳은 북쪽에 봉수가 있고 남쪽에 속문산산성(俗門山山城)이 있던 것으로 보아 군사상 중요한 곳이었다. 상주와 진주를 지나는 도로가 발달되어 교통상 중요한 역할을 하였다. 청리(靑里)ㆍ화령(化寧)ㆍ화창(化昌)과 함께 상주 주변에 발달하였던 위성취락(衛星聚落)으로 볼 수 있다.