The Red Wings had won 23 straight home games and seemed headed for a 24th before Daniel Sedin scored a tying goal with 16 seconds left in regulation.
Detroit then could not put one past Roberto Luongo in the shootout and suffered its first home loss since dropping a 4-1 decision to Calgary Nov. 3.
It was only the fourth home loss all season for the Red Wings, two of them having come in overtime.
Detroit took the lead on three occasions only to see the Canucks tie it each time.
Darren Helm opened the scoring for the Red Wings with the only first-period goal and Sedin produced his first score of the contest midway through the second.
After Kyle Quincey gave Detroit a 2-1 lead 6:08 into the third, Cody Hodgson tied it again.
Justin Abdelkader's wrist shot with 6:14 to go in regulation pushed the Red Wings back in front. Sedin's critical goal in the final seconds came on a slap shot and was his 28th of the season.
Vancouver moved within one point of Detroit for the best record in the NHL.
Luongo made 33 saves. Jimmy Howard suffered the loss while stopping 40 shots.