본관은 여산(礪山). 자는 도심(道深), 호는 범허정(泛虛亭). 감찰 송초(宋礎)의 증손으로, 할아버지는 예조참의 송극인(宋克認)이고, 아버지는 좌승지 송시철(宋時喆)이다. 어머니는 연안부사 정지경(鄭之經)의 딸이다.
1654년(효종 5)에 진사가 되고 1666년(현종 7) 별시 문과에 병과로 급제, 부정자(副正字)·세자시강원주서(世子侍講院注書)·사간원정언(司諫院正言)·사헌부지평(司憲府持平) 등을 거쳤다. 1671년 이원정(李元禎)·이담명(李聃命)·박천영(朴千榮) 등의 죄를 청했다가 상신(相臣: 삼정승의 다른 이름)에게 미움을 사 경성판관(鏡城判官)으로 좌천되었는데, 부임하지 않아 파직되었다.
이어 거듭 부모 상을 당하여 5년간 상복을 입고 강릉의 학담(鶴潭)에 은둔하였다. 10여 차례나 승지에 제수되었으나 모두 사양하였다. 마침내 병 때문에 의사를 찾아 서울로 돌아와 고양(高陽) 행호(杏湖)에 정자를 짓고 이를 범허정이라 이름지었다. 1678년(숙종 4)에 순창군수로 나갔다가 경신환국으로 귀경하였다.
다시 홍문관교리(弘文館校理)가 되어 이이(李珥)·성혼(成渾)의 문묘종사(文廟從祀)를 청했고, 홍문관부응교(弘文館副應敎)·사헌부집의(司憲府執義)·홍문관응교·사간원사간 등을 역임하였다. 이 때 병조판서인 이사명(李師命)이 호포제(戶布制)를 시행하고자 하여 먼저 관서 지방에서 이를 시험해볼 것을 청하자, 적극 반대하여 시행을 철회시켰다.
승지·병조참지를 지내고 안동부사로 전임되었으나 부임하지 않아 파직되었다. 그 뒤 다시 복직되어 예조참의·황해도관찰사를 지냈고 춘천부사로 좌천되었다가 이듬해 병으로 돌아왔다. 그 뒤 진주목사·형조참의·개성유수·이조참판 등을 역임하였다. 성품이 강개하고 벼슬을 좋아하지 않았으며 오로지 학문을 했다는 평을 받았다.
저서로는 『범허정집(泛虛亭集)』이 있다.