Adam Gaudette took a pass from J.T. Miller and scored on a high wrist shot from the left hash marks with 4:11 left in the third period to give the Canucks a 6-5 lead.
"That was a little bit of a crazy game," Gaudette said.
WATCH: [All Blackhawks vs. Canucks highlights]
Bo Horvat scored into an empty net with nine seconds remaining for the 7-5 final.
"It's always fun to play in those games, especially when you're on the winning side of it," Horvat said. "It felt like a playoff game out there."
Horvat had two goals and an assist, Miller had a goal and three assists, and Elias Pettersson and Tanner Pearson each had a goal and two assists for the Canucks (22-15-4). Jacob Markstrom made 28 saves.
"It was kind of an ugly game," Miller said. "It got into a bit of a track meet. Sometimes it happens against those guys. It was important we didn't quit in the second period when it got a little ugly. We got it together and found a way to get two points."
Patrick Kane had two goals, Jonathan Toews had a goal and an assist, and Dominik Kubalik had three assists for the Blackhawks (18-18-6), who had won three straight. Robin Lehner made 30 saves.
"I don't know what to say, it was a really weird game," Lehner said. "I thought we deserved better. What was it, two tips, two off our own bodies? It just felt like everything they threw to the net went their way and it's tough because I felt like I made a lot of really good saves. I felt good today and I let in six goals, so it's frustrating."