In a fourth quarter that featured multiple lead changes, Minnesota moved in front for good, 96-95, on Pekovic's foul shots with 14.5 seconds to play.
Pekovic, who had 13 points and six rebounds in 24 minutes, grabbed the offensive rebound of a Williams miss and was fouled trying to finish the put-back.
Kirilenko blocked a shot by Eric Gordon with six seconds to play. Fouled after grabbing the rebound, Kirilenko made one of two free throws for the final point of the game. He wound up with eight points and five rebounds in 25 minutes.
The Hornets had one more chance to tie or win, but Kirilenko erased it by blocking Roger Mason's jumper from the right corner just before the final horn sounded.
"We had a chance to win the game," New Orleans coach Monty Williams said. "We were up by four, and we fouled a guy going to the basket and give them a 3-point play. You can't explain that kind of stuff. Then we have the ball with a chance to score a bucket, and we can't score a bucket.
"We didn't shoot the ball well, but we gave it up 20 times, so that compounds it all."
New Orleans led 95-91 with a minute to play when Vasquez made two free throws, but Minnesota's point guard wouldn't give up. On the next possession, Rubio beat his man off of the dribble, got to the basket and completed an old-school three-point play to cut the lead to 95-94 with 48.7 seconds left.
The two teams, which are a combined 23-49 since the start of 2013, traded the lead for much of the fourth quarter. Ryan Anderson buried a 3-pointer with just less than six minutes to play to give the Hornets an 85-83 lead.
Rubio answered with a jumper on Minnesota's next possession, trying the game at 85-85.
Vasquez hit two 3-pointers down the stretch, the second of which put the Hornets ahead 91-88 with 3:24 remaining. Lopez stretched the New Orleans lead to 93-90 with a bucket with 2:25 to play.