Messi opened the scoring from the penalty spot at Camp Nou in the fifth minute but Barca had to wait until the 65th minute for Pique to add their second goal.
Kiev, who were missing nine players after they tested positive for coronavirus this week, pulled a goal back through Viktor Tsygankov to set up a nervy finale.
Barca are effectively into the last 16 at the halfway stage of the group phase. They're eight points clear of Kiev in third with just nine points to play for. One win from their final three games will suffice and a win in Kiev after the international break will remove the pressure completely for their final two games against Ferencvaros and Juventus.
The big positive on Wednesday, though, was the return of Marc-Andre ter Stegen. The German goalkeeper was making his first appearance of the season after recovering from a knee injury and he wasn't eased back into action. He had to make a string of fine saves to ensure Barca held on to the three points.
Barca coach Ronald Koeman has bemoaned his side's profligacy in front of goal this season and that was again the case here. They could have been out of sight by half-time -- if not in the first 10 minutes -- but failed to take their chances. Perhaps summing up their struggles is the statistic that all four of Messi's goals this season have come from the penalty spot.
It's worth mentioning, mind, that Ruslan Neshcheret was inspired in the Kiev goal. The 18-year-old goalkeeper, only playing because of the coronavirus crisis at the club, was fantastic.
Manager rating out of 10
6 -- Koeman picked an adventurous side fitting of a home game in the Champions League and on another day his team would have been out of sight by the break. They struggled late on, though, and his substitutes didn't seem to help kill the game off.
Player ratings (1-10; 10 = best. Players introduced after 70 minutes get no rating)
GK Marc-Andre ter Stegen, 9 -- Delivered a man-of-the-match performance in his first game since August, making six top-quality saves.
DF Gerard Pique, 7 -- Sandwiched between new signing Dest and midfielder De Jong, he needed all his experience against Kiev. Took his headed goal like a striker.
DF Frenkie de Jong, 6 -- For the third game running, he was forced to play in defence due to Barca's shortage of centre-backs. Did OK but was caught out a couple of times,
MF Sergio Busquets, 6 -- An improved performance on his last two outings before being taken off with what appeared a minor injury problem.
FW Lionel Messi, 7 -- Won and scored the early penalty which gave Barca the lead and only the inspired Neshcheret stopped him from adding to his tally. The goalkeeper tipped a shot destined for the bottom corner wide in the first half and somehow clawed a second-half free kick out of the top corner.
FW Pedri, 6 -- Smashed the crossbar early on and was then denied by Neshcheret later in the first half. Another performance that belied his 17 years.
FW Ansu Fati, 7 -- Drew a couple of good saves from Neshcheret and set up Pique's goal with a nice cross.
FW Antoine Griezmann, 5 -- Missed a great chance to double Barca's lead inside the first 10 minutes and then struggled to make an impact on the game before being withdrawn in the 59th minute.
MF Sergi Roberto, 6 -- Had a far-post header well saved by Neshcheret just after coming on in his preferred midfield position.
FW Ousmane Dembele, 6 -- Almost scored a stunning goal from 25 yards but was denied by a fantastic Neshcheret save.
FW Francisco Trincao, N/R -- Unable to make the most of his cameo on the right wing despite getting the ball in some promising areas.
DF Clement Lenglet, N/R -- Deemed a risk to start the game with a minor knock but came on for the final 15 minutes.
MF Carles Alena, N/R -- Came on for his first appearance of the season in the 83rd minute.