Boeser gave the Canucks a 1-0 lead on a breakaway after a stretch pass from Pettersson 58 seconds into the first period.
"I don't mind the way we checked tonight, to be honest, for parts of it," Avalanche coach Jared Bednar said. "We made some big mistakes, though, and gave up the home run play, which I don't like."
Sheldon Dries
tied it 1-1 on a redirection in the slot at 1:38 of the second period, but Boeser scored to make it 2-1 at 5:18. Pettersson sent a pass from his blue line off the end boards to a streaking Boeser, who beat Grubauer glove side with a one-timer.
"I saw him have more speed than the defender," Pettersson said. "I was just trying to make a play and it worked out."
Ian Cole tied it 2-2 on a point shot through traffic at 6:08.
Loui Eriksson scored his first of the season at 8:47 to make it 3-2, but MacKinnon scored from the high slot off a pass from Rantanen to tie it 3-3 at 10:32.
Kerfoot gave the Avalanche a 4-3 lead at 12:36 after splitting two Canucks defensemen and beating Markstrom from in front.
"I didn't have much a part of this one," Markstrom said. "But it's a nice win."
Pettersson tied it 4-4 on a rebound at 17:33, but Nikita Zadorov scored off the rush at 1:30 of the third period to make it 5-4.
"We've not been very good defensively," MacKinnon said. "I thought we were way better tonight, but every time we made a mistake, they found a way to score."
Markus Granlund tied it 5-5 on a power play at 10:02.
MacKinnon scored on a power play with 1:37 left in the third to give Colorado a 6-5 lead, but Pettersson tied it 6-6 at 19:24 on a one-timer from the right circle following a turnover behind the net.
"I got goosebumps when we tied the game late," Pettersson said.
Said Markstrom, "Our young players are really confident in themselves and it wears off on other players, too. Even though we're down by one with a minute left, they're confident that they're going to score and they go to the net. And that's that."