본관은 은진(恩津). 자는 도원(道源), 호는 제월당(霽月堂). 군수 송남수(宋枏壽)의 증손으로, 할아버지는 성균관학유(成均館學諭) 송희원(宋希遠)이고, 아버지는 이조판서 송국전(宋國詮)이며, 어머니는 안경인(安敬仁)의 딸이다.
송준길(宋浚吉)의 문인으로 19세 때 사마시에 합격하고, 1654년(효종 5) 식년 문과에 을과로 급제하여 검열·지평·정언·사예(司藝)·응교·서천군수 등을 역임하였다. 현종 때 수찬·부교리·정언·헌납·이조좌랑·사간 등을 거쳐 1667년(현종 8)에 사헌부집의에 이르러 병으로 사직했다가 다시 홍문관교리를 거쳐 사간이 되었다.
1674년에 효종비 인선왕후(仁宣王后) 장씨(張氏)의 복상문제에 대해 남인의 주장인 기년설(朞年說)이 채택되고 대공설(大功說)을 주장했던 송시열(宋時烈)·송준길 등이 귀양가게 되자 이들의 신원(伸寃)을 주장했다가 파면당하였다.
1680년(숙종 6) 경신환국으로 서인들이 다시 집권하게 되자 다시 기용되었다. 이후 사간·수찬·대사간·승지·이조참의·부제학·대사성 등을 거쳐 대사간이 되어 시폐(時弊) 4조를 올렸다. 그 뒤 안변부사·강양도관찰사(江襄道觀察使)·공홍도관찰사(公洪道觀察使)·도승지 등을 역임하였다.
1689년 기사환국으로 남인이 집권하자 사직하고 고향에서 학문을 닦았다. 1694년 갑술옥사로 정국이 다시 바뀌게 되자 다시 부제학·대사간·대사헌·우참찬·동지중추부사·예조참판을 지내고 1699년 기로소(耆老所)에 들어갔다. 지중추부사·우참찬·예조판서·대사헌 등에 임명되었으나 모두 사퇴하였다. 80세 때에는 지돈녕부사에 올랐으나 사퇴하고 고향으로 내려갔다.
학문이 뛰어나 송시열·송준길 등과 동종(同宗)·동향(同鄕)으로 함께 삼송(三宋)으로 일컬어졌고, 전서(篆書)·주서(籒書)에 능하였다. 회덕의 미호서원(美湖書院)에 제향되었다. 시호는 문희(文僖)이다.
저서로는 『제월당집(霽月堂集)』이 있다.