김유신(金庾信)과 김인문(金仁問)을 도와 고구려정벌에 큰 공을 세웠으며, 문무왕 때는 병부령(兵部令) · 상대등까지 올랐다.
백제 멸망 뒤인 661년(문무왕 1) 7월 남천주총관(南川州摠管)이 되어 고구려원정에 출정하였다. 그러나 이때는 백제잔민의 토벌이 급선무였고, 또한 무열왕의 상중(喪中)이어서 중도에서 회군하였다. 664년초 한산주 도독(漢山州都督)이 되어 고구려 정벌을 위한 계획 수립에 큰 몫을 하였다.
같은 해 9월 고구려 정벌군이 출동하였는데, 그는 일선(一善 : 지금의 경상북도 구미) · 한산(漢山 : 지금의 경기도 광주)의 두 주의 군대를 거느리고 웅진부성(熊津府城)의 병마와 합세하여 고구려의 돌사성(突沙城)을 함락시켰다.
668년 6월 고구려 정벌 당시 잡찬(迊飡)이던 그는 대아찬(大阿飡) 도유(都儒), 아찬 용장(龍長)과 함께 한성주행군총관(漢城州行軍摠管)으로 출정하여 평양성 함락에 큰 공을 세워 이찬(伊飡)이 되었다.
680년 2월 상대등이 되었으며, 병부령을 겸하였다. 그러나 681년 소판(蘇判) 김흠돌(金欽突)의 모반사건을 보고하지 않은 이유로 죽임을 당하였다.