본관은 남양(南陽). 자는 면숙(勉叔), 호는 백석(白石). 아버지는 사인(舍人) 홍의필(洪義弼)이며, 사평(司評) 홍인필(洪仁弼)에게 입양되었다. 성혼(成渾)의 문인이다.
1610년(광해군 2) 사마시에 합격해 생원이 되었다. 1615년 이이첨(李爾瞻)의 사주를 받은 정조(鄭造)·윤인(尹訒)·이위경(李衛卿) 등이 인목대비(仁穆大妃)의 폐모론을 제기하자, 이에 반대하고 이들을 목벨 것을 상소하였다.
폐모론에 반대하던 이원익(李元翼)이 유배되자, 정택뢰(鄭澤雷)·김효성(金孝誠) 등과 서로 잇따라 소를 올려 이원익의 충절을 밝히고 폐모론자를 목벨 것을 주장하다 자신도 거제도로 유배되었다.
1623년 인조반정으로 석방, 창녕현감에 기용되고 이듬 해 진천현감이 되었다. 1632년(인조 10) 지평·수찬을 거쳐 김제군수가 되었으며, 이어 공주목사를 역임하였다. 1639년 장령으로 병자호란에 대한 복수와 수치의 설욕 및 강화도의 수축을 상소하였다.
1641년 사간에 임용되었으나 과거에 급제하지 않은 자를 언관에 기용할 수 없다는 정승들의 반대로 동부승지가 되었다. 이듬해 우부승지로 재직하면서, 사인(士人: 벼슬을 하지 않은 선비)들이 공공연하게 뇌물을 주고받는 것과, 언로가 막혀 있는 것을 지적하는 등 시폐(時弊)를 논하였다.
우승지·병조참판을 거쳐 1643년 대사헌이 되어서는 좌의정 심기원(沈器遠)의 거리낌없는 탐욕과 방종, 그리고 교만함을 들어 탄핵하였다. 1644년 판결사가 되고 사은부사(謝恩副使)로 청나라에 다녀와 행호군·대사헌을 역임하였다.
이듬해 다시 병조참판이 되었는데 백도(白徒) 한신남(韓信男)의 말만 믿고 그를 겸사복장(兼司僕將)에 의망(擬望: 세 후보자를 추천함.)한 데 책임을 지고 파직되었다. 1646년 대사헌으로 강빈(姜嬪: 昭顯世子嬪)의 옥사에 “강빈을 죽이려면 신을 먼저 죽여달라.”고 극간하다가 제주도로 유배되었다.
다음해 소현세자의 세 아들이 제주도에 유배되자 이들과의 격리를 위해 남해로 이배되었다가 다시 갑산으로 옮겨졌다. 1649년 효종이 즉위하자 사면되어 재야로 쫓겨났다가 이듬 해 한성우윤에 기용되었다.
이어 대사헌 지의금부사를 지내고 1652년(효종 3) 공조판서에 오른 뒤 대사헌·우참찬·좌참찬·형조판서 등을 역임하였다. 시호는 충정(忠貞)이다.