Patrick Kane scored twice for the Blackhawks (18-18-6), who had their three-game winning streak snapped.
Jonathan Toews had a goal and an assist, and Connor Murphy and David Kampf also scored for the Blackhawks, who are 5-2-0 in their last seven games.
Canucks goaltender Jacob Markstrom made 28 saves. Chicago goalie Robin Lehner, making his fourth consecutive start, stopped 30 shots.
“It was a really weird game,” Lehner said. “I thought we deserved better.
“It just felt like everything they kind of threw to the net went their way. It’s tough because I felt like I made a lot of really good saves.”
Horvat put the Canucks ahead 5-4 at 8:10 of the third period. He sent a shot at the net from along the boards. Lehner kicked the puck, it hit defenseman Dennis Gilbert and careened into the net. A frustrated Lehner banged his stick on the crossbar.
Kane made it 5-5 at 13:44 of the third, putting a shot between Markstrom’s pads.
A wild second period saw the teams combine for six goals. Chicago scored three times in just over four minutes to take a 4-2 lead, but the Canucks battled back to tie the game before the period ended.
Pearson gave Vancouver a 2-1 lead at 2:48, deflecting a fluttering shot by defenseman Alex Edler for his 16th point in as many games.
Kampf tied the game for Chicago at 4:15, using teammate Matthew Highmore as a screen. Kane scored on a power play at 6:25, then Toews made it a two-goal lead at 8:17 on a strange play. The Chicago captain flipped a puck along the boards that hit Hughes on the back and bounced into the net.
Hughes made up for that miscue when he drew the Canucks to within one with a blast from just inside the blue line on a power play at 10:20. Pettersson tied the game again 85 second later, ripping a shot from between the face-off circles.
Miller scored the game’s opening goal at the 5:04 mark of the first period, just seconds after Chicago killed a too-many-men penalty. Horvat took a shot from just inside the blue line that Miller tipped past Lehner for his 15th goal of the season.
Chicago tied the game just under nine minutes later. Canucks defenseman Oscar Fantenberg tried to pass from behind his own net, but the puck was tipped and took a strange bounce. Murphy pounced on the puck and beat a screened Markstrom on the short side.
Kane said both teams benefited from bounces.
“That’s the way the game goes sometimes,” he said. “You can’t control everything out there, but we can control our work ethic and our commitment to defense.
“It never looks good when you give up seven, but I thought we actually played pretty well tonight.”
NOTES: The Canucks last won six consecutive games between Dec. 28, 2016, and Jan. 6, 2017. … Vancouver’s Brandon Sutter skated on his own during the morning skate but missed his sixth game with an upper-body injury. … Kane scored 802 points over the last decade, the most by any NHL player.
Blackhawks: Host Detroit Red Wings on Sunday.
Canucks: Host the New York Rangers on Saturday.
More AP NHL: www.apnews.com/NHL and www.twitter.com/AP_Sports