본관은 함안(咸安). 자는 익장(益章). 생육신의 한 사람인 증참판 조여(趙旅)의 10대 손이며, 조봉원(趙逢源)의 증손으로, 할아버지는 조해(趙楷)이고, 아버지는 대사간 조영복(趙榮福)이다. 어머니는 이만봉(李萬封)의 딸이다. 이재(李縡)의 문인이다.
1736년(영조 12) 정시문과에 병과로 급제하여 1739년 설서가 되고, 예문관검열을 거쳐 1743년 정언이 되었다. 이 때 왕의 사묘(私廟)의 참례(參禮)와 사행(使行)의 폐를 통렬히 논박하다가 관직을 삭탈당하였다. 1748년 대신들이 경연석상에서 상주(上奏)하여 부수찬에 다시 기용되었으며, 교리·수찬을 거쳐 이듬해 헌납·겸사서·문학 등을 역임하였다.
1750년 탕평책을 반대하는 윤급(尹汲)을 변호하다 파직당했으나, 곧 기용되어 이듬해 겸필선이 되었다. 이어서 사은 겸 동지사(謝恩兼冬至使)의 서장관(書狀官)으로 정사 낙창군 당(洛昌君檔), 부사 신사건(申思建)과 함께 청나라에 다녀왔다. 1752년 필선이 되고, 이듬해 통정대부(通政大夫)에 올라 승지를 역임한 뒤 1757년 대사간이 되었다.
1759년 대사성이 되었으며, 그 뒤 승지·병조참의·영변부사·양주목사 등을 거쳐 다시 승지가 되었다. 이 때 장헌세자(莊獻世子)가 뒤주에 갇혀 아사하게 되자, 그 부당함을 극간하다가 무장(茂長)으로 유배되었다. 1770년 개성유수, 이듬해 우윤·도승지를 역임하였다. 그 뒤 1772년 이조참판, 이듬해 대사헌·예조판서 등을 거쳐 다시 대사헌이 되었다.
1775년 이조판서에 이어 다시 예조판서가 되었으며 이듬해 영조가 죽자 빈전도감(殯殿都監)의 도제조를 겸하였다. 정조의 즉위와 함께 함경도관찰사가 되었다. 이 때 함경도 지방에 혹심한 흉년이 들자 기근의 참상을 알리고 진휼책(賑恤策)의 시급함을 건의하였다. 1779년(정조 3) 공조판서가 되었으며, 이듬해 치사(致仕)하여 기로소(耆老所)에 들었다.
1781년 세도가 홍국영(洪國榮)이 죽자 이조판서에 임명되었으나, 사양하고 봉조하(奉朝賀)가 되었다. 시호는 충헌(忠憲)이다.