본관은 양천(陽川). 자는 여차(汝車), 호는 묵재(默齋)·휴옹(休翁)이다. 허초(許礎)의 증손으로, 할아버지는 허잠(許潛)이고, 아버지는 부사 허한(許僩)이며, 어머니는 김제(金悌)의 딸이다.
1633년(인조 11) 사마시에 합격하고, 1637년 정시문과에 병과로 급제하였다. 검열·부수찬을 지내고, 1641년 의주부윤으로 관향사(管餉使)를 겸하였다. 1645년 경상도관찰사가 되었으나 1647년 일본사신 다이라[平成辛]를 위법으로 접대한 죄목으로 파직되었다.
그 뒤 다시 기용되어 1653년(효종 4) 호조참판, 1655년 호조판서를 거쳐, 1659년 형조판서를 역임하였다. 그 해 효종이 승하하면서 자의대비(慈懿大妃)의 복상문제(服喪問題)가 일어나자, 남인으로서 서인의 기년설(朞年說: 만 1년 설)에 맞서 3년설을 주장했으나 채택되지 않았다.
1662년(현종 3) 진주부사(陳奏副使)로 청나라에 다녀왔으며, 1664년 우의정이 되었다. 같은 해 사은 겸 진주사(謝恩兼陳奏使)로 다시 청나라에 다녀와 좌의정에 올랐다. 1671년 영의정이 되었으나 이듬해 송시열(宋時烈)의 논척을 받아 영중추부사로 전임되었다.
1674년(숙종 즉위년) 인선대비(仁宣大妃)가 죽어 자의대비의 복상문제가 다시 일어나자, 서인의 대공설(大功說: 9개월 설)에 맞서 기년설을 주장하였다. 이번에는 그 주장이 받아들여지면서 다시 영의정에 복직하고 남인이 집권하였다.
그 뒤 송시열의 처벌문제로 남인이 청남(淸南)·탁남(濁南)으로 분열되자, 탁남의 영수가 되어 청남을 밀어내었다. 1676년 사은 겸 진주변무사(謝恩兼陳奏辨誣使)로 청나라에 세 번째 다녀온 뒤, 오도도체찰사가 되었다.
1678년 재정 고갈을 막기 위해 상평통보의 주조·통용을 건의하였다. 왕의 신임을 받아 궤장(几杖)이 하사되고 기로소(耆老所)에 들어갔다. 1680년 할아버지 허잠(許潛)이 시호를 받게 되어 그 축하연을 베풀 때 궁중의 유악(帷幄)을 함부로 사용해 왕의 노여움을 사기도 했다.
그 와중에 서자 허견(許堅)의 모역사건에 휘말려 들어 사사(賜死)되었다. 1689년 숙종이 그의 애매한 죽음을 알게 되어 무고한 서인 김익훈(金益勳)·이사명(李師命) 등을 죽이고, 관작을 추복하였다.
식견이 넓고 총명한 재질로서 충성을 다하였으며, 재상이 되어 자기에게 내리는 왕의 은혜는 친구들에게 돌리고 녹봉으로 친구들을 구제하였다. 일찍이 사헌부에 있을 때에는 이조판서 이경석(李景奭), 병조판서 이시백(李時白) 등의 인사 부정을 과감히 탄핵해 백관들을 놀라게 하기도 하였다. 남인으로서 서인의 송시열 등과 가까이 지냈다.