화랑 관창(官昌)의 아버지이다. 진골(眞骨) 출신으로, 관등은 이찬(伊飡)에 이르렀다.
660년(태종무열왕 7) 신라와 당나라 연합군이 백제를 공격할 때, 김유신(金庾信) · 흠순(欽純) 등과 함께 신라군을 이끌고 백제를 공략하였다. 백제의 수도 사비성(泗沘城 : 지금의 충청남도 부여)으로 진격하는 도중에 황산(黃山 : 지금의 連山)에서 백제의 계백(階伯)이 이끄는 5,000의 결사대의 강력한 저항에 부딪치게 되었다. 이에 신라군은 3군으로 나누어 백제군과 4번이나 싸웠으나 모두 패퇴함으로써 군졸들의 사기가 크게 저하되었다.
이 때 그는 좌장군(左將軍)의 직을 맡고 있으면서 아들 관창을 불러 “오늘 싸움에서 네가 능히 3군의 모범이 되겠는가?”하고 묻고, 그렇게 하겠다는 그를 단신으로 나가 싸우게 하였다. 그러나 관창은 마침내 계백에게 사로잡혀 죽음을 당하고 베어진 그의 머리만 계백의 선처에 의해 말안장에 매달려 신라군에게로 되돌아왔다. 품일은 관창의 머리를 잡고 흐르는 피로 옷깃을 적시며 말하기를, “우리 아이의 면목이 살아 있을 때와 다름이 없다. 나랏일을 위하여 죽었으니 다행이다.”라고 하였다. 이것을 본 신라의 3군은 비분강개하여 백제군으로 진격하여 계백을 전사시키고 좌평(佐平)충상(忠常) · 상영(常永) 등 30여 인을 포로로 잡는 등 큰 승리를 거두었다.
661년에 이미 멸망한 백제의 남은 군사들이 다시 사비성을 탈환하기 위해 침공하자, 왕으로부터 대당장군(大幢將軍)에 임명되어 상주장군(上州將軍)문충(文忠), 하주장군(下州將軍)의복(義服) 등과 함께 백제군을 토벌하기 위해 출전하였다. 그러나 군사를 나누어 먼저 가서 두량윤성(豆良尹城 : 지금의 충청남도 금산군 부리면) 남쪽에서 주둔할 장소를 살피던 중에 백제군의 불의의 습격을 받아 패퇴하였다.
한편, 하주군은 빈골양(賓骨壤 : 古阜 동쪽 / 지금의 전북특별자치도 정읍시·부안군)에서 백제군의 공격을 받아 군수품의 손실이 많았다. 이로 인해 이 싸움에서 패배한 신라의 장군들은 책임의 경중에 따라 왕으로부터 죄를 받았다.