본래 백제의 사포현(寺浦縣)이었는데, 757년(경덕왕 16) 남포로 고쳐 서림군(西林郡)의 영현(領縣)이 되었다. 1018년(현종 9) 가림현(嘉林縣)에 속하였다가, 뒤에 감무(監務)를 두었다.
1380년(우왕 6) 왜구의 침입으로 주민들이 사방으로 흩어졌다가 1390년(공양왕 2) 진(鎭)을 두어 흩어진 백성을 소집하였다. 1397년(태조 6) 병마절제사(兵馬節制使)를 두어 현사(縣事)를 겸하게 하였다. 1466년(세조 12) 진을 혁파하고 현감(縣監)을 두었다.
1895년(고종 32) 홍주부 남포군, 1896년 충청남도 남포군이 되었다가, 1914년 행정구역 개편에 따라 보령군에 편입되어 남포·웅천(熊川)·주산(珠山)·미산(嵋山)면으로 되었다. 1995년 보령군과 대천시가 통합되어 이 시에 속하게 되었다.