원래 백제의 기군(基郡)이었는데, 신라 경덕왕 때 부성군으로 고치고 소태(蘇泰)ㆍ지육(地育) 등을 영현(領縣)으로 두었다. 893년(진성여왕 7) 최치원(崔致遠)이 태수가 되었다. 1144년(인종 22) 현령을 두었고, 1182년(명종 12) 호장(戶長)의 역모사건이 있어 현을 폐하고 운주(運州)에 이속시켰다.
1284년(충렬왕 10) 고을사람 정인경(鄭仁卿)이 왜구를 격퇴시킨 공으로 서산군이라 고치고 승격되었으며, 1308년 서주목(瑞州牧)으로 승격되었다. 1310년(충선왕 2) 서령부(瑞寧府)가 되었다가 다시 지서주사(知瑞州事)로 격하되었다. 1413년(태종 13) 다시 서산군으로 복귀되었고 그 뒤 현ㆍ군이 되풀이되었다.
1914년 행정구역 개편 때 해미군과 태안군을 편입하였다. 1989년 태안군이 신설되어 분리되었으며, 1995년 서산시와 서산군이 통합되어 서산시가 되었다.
중앙에서, 또 남북대로에서 떨어져 있어서 옛 지리적 경관을 비교적 잘 보존하고 있다. 보기 드문 산촌취락도 찾아 볼 수 있으며, 무등농악 등의 민속놀이 유풍도 찾아 볼 수 있다.