1669년(현종 10) 사마시에 합격, 1675년(숙종 1) 유생들과 더불어 자의대비(慈懿大妃) 복상 문제로 송시열(宋時烈)이 유배되자 이의 부당함을 상소하였다. 1681년 식년 문과에 을과로 급제해, 승문원정자(承文院正字) · 전적(典籍) · 지평(持平)을 거쳤다.
1686년 정언(正言)이 되어 궁가(宮家)에서 저수지를 만든다는 구실로 민전(民田)을 침해하고 있음을 상소하였다. 그 뒤 예조좌랑 · 병조좌랑을 역임하고, 1689년 홍문록(弘文錄) · 도당록(都堂錄)에 올랐다. 그 해 기사환국으로 남인이 집권하자 사직했는데, 일찍이 송시열과 함께 유배된 이상(李翔)을 변호한 일로 평안도의 철산(鐵山)에 유배되었다가 곧 풀려났다.
1694년 갑술옥사로 소론이 집권하자, 다시 기용되어 부수찬(副修撰) · 수찬 · 부교리(副校理) · 교리 · 필선(弼善) · 집의(執義) 등을 역임하였다. 이듬해 경상도관찰사가 되고, 1696년 회양부사, 1697년 전라도관찰사 등을 역임하며 진휼 정책(賑恤政策)을 잘해 칭송을 받았다.
1698년 승지에 이어 1699년 대사간, 1702년 개성유수, 이듬해 승문원제조 · 이조참판, 1704년 대사헌 · 대사성 등을 역임하였다. 1706년 예조참판 · 경기도관찰사, 1707년 한성부판윤이 된 뒤 형조 · 병조 · 이조판서를 거쳤다.
1710년 호조판서가 되어 북한구관당상(北漢句管堂上)을 겸하며 산성과 행궁의 축조 책임을 맡았다. 1712년 과옥(科獄)이 일어나자 소론으로서 자기의 당여를 두둔하지 않고 엄정하게 사실을 규명해 소론으로부터 배척을 받기도 하였다.
이듬해 우참찬 · 예조판서 · 판의금부사를 거쳐 우의정이 되었으며, 1716년 내의도제조(內醫都提調) · 판중추부사를 역임하고, 1721년(경종 1) 영중추부사 가 되었다. 1722년 신임사화로 노론의 사대신이 화를 입자 이의 부당함을 적극 주장했으며, 또 김일경(金一鏡)의 사친추존론(私親追尊論)을 반대하다가 화를 입었다.
평생을 청빈하게 살았으며 사람들로부터 장자(長子) 또는 완인(完人)이라 불렸다. 저서로 『갑봉집(甲峰集)』이 있다. 시호는 충정(忠靖)이다.