본관은 창녕(昌寧). 도승지 조석원(曺錫元)의 아들이다.
1872년(고종 9) 알성시 병과로 급제하였다.
1881년 응교로 홍문관에서 연명으로 차자(箚子)를 올려 척사의 소를 올린 이만손(李晩孫)·홍시중(洪時中) 등의 처벌을 청하였다. 이 해 동지사의 서장관으로 청나라에 다녀왔다.
1883년 집의가 되고 이듬해는 식년시의 시관(試官)으로 임명되었다. 그 해 승정원의 동부승지로 있으면서 갑신정변을 일으킨 김옥균(金玉均) 일파의 처단을 청하는 계(啓)를 올렸다. 1888년 이조참의가 되었다가 1890년 호군으로서 대호군 이승오(李承五) 등과 함께 과거의 시체(試體) 문제를 거론하였다.
같은 해 김춘희(金春熙)와 교체되어 동지부사로 다시 청나라에 다녀왔다. 1892년에는 이조참판·대사간·대사헌 등을 역임하고 1894년 내무협판이 되었다. 그런데 당시 일본은 동학농민군의 봉기를 계기로 군대를 파견하고, 조선의 내정을 간섭함으로써 조선을 지배하려 하였다.
6월 1일 오토리[大鳥圭介]공사가 조선정부에 내정개혁을 제시하며, 개혁안조사위원으로 국왕이 신임하는 중신을 임명해 줄 것을 요구하였던 것이다. 이 때 6월 5일 내무독판(內務督辦) 신정희(申正熙), 협판 김종한(金宗漢) 등과 함께 내정개혁조사위원으로 임명되어 6월 8일 남산 노인정(老人亭)에서 일본측과 회담을 개최하였다.
일본측은 5조 27항의 개혁안을 제시하며 수락을 요구하였으나, 조선측 위원들은 일본군이 철수하지 않으면 내정개혁을 할 수 없다며 거부하였다. 그리고 조선정부는 독자적으로 개혁을 실시하고자, 6월 11일 교정청(校正廳)을 설치하고 15인의 시원임대신을 당상으로 임명하였는데, 이 때 그 중 1인으로 선임되었다.
그 뒤 공무아문의 협판을 지내고 1895년 중추원의관으로서 춘천부 관찰사가 되었다. 그러나 그 해 명성황후(明成皇后)시해사건으로 전국적으로 의병이 봉기하자, 춘천의 이항로(李恒老) 문인 이소응(李昭應)의 의병부대에 의해 살해되었다. 서법(書法)이 뛰어났다. 시호는 충헌(忠憲)이다.