Staal broke a 2-2 tie at 15:38 of the middle frame as he got a piece of teammate Mikael Granlund's shot while tangling with Canucks defenseman Troy Stecher.
"It was a great shot by Granny," Staal told Sportsnet. "I got an inside position and got a lucky bounce. We'll take it."
The marker was the 17th in 18 games for the 33-year-old Staal, who is challenging for the NHL goal-scoring lead with 37, three behind leader Alex Ovechkin of the Washington Capitals.
The score was tied 1-1 after the first period and the Wild led 3-2 after 40 minutes before counting two more goals in the game's final minute.
Zach Parise, Matt Cullen, Charlie Coyle and Marcus Foligno also scored for the Wild as Minnesota earned its third straight win and improved to 8-2-1 in its past 11 games.
Coyle scored into an empty net in the final minute as Vancouver goaltender Anders Nilsson was pulled for an extra attacker. After Coyle scored, Foligno put home a shot with Nilsson back in net. Cullen and Coyle each recorded an assist as well.
Michael Del Zotto and Jussi Jokinen, with his second goal in two games, replied for the Canucks, who suffered their second straight loss and finished 1-2-2 on their five-game home stand.
Minnesota netminder Devan Dubnyk saved 30 of 32 shots en route to his 30th win of the season. Nilsson finished with 28 saves on 32 shots.
The Canucks were looking for a better effort from themselves after being embarrassed 2-1 on Wednesday by the lowly Arizona Coyotes in a game that was much more one-sided than the score indicated.
Del Zotto put the Canucks on the scoreboard first -- only 53 seconds into the game -- as he picked up his own rebound off the end boards and put in a wraparound.
But Parise drew the Wild even less than two minutes later on a shot from a sharp angle. The goal extended Parise's scoring streak to six games.
The Canucks thought they had taken the lead with 3:24 left in the first period, but a video review showed that Sam Gagner directed the puck in with his skate.
Cullen gave the Wild a 2-1 advantage at 2:46 of the second period as he beat Nilsson on a forehand-to-backhand deke during a rush. Jokinen created a 2-2 tie just over five minutes later as he put in Erik Gudbranson's rebound, setting the stage for Staal's heroics.
--Field Level Media
Minnesota | Vancouver | |
Charlie Coyle 2 | Points | Michael Del Zotto 1 |
Charlie Coyle 1 | Goals | Michael Del Zotto 1 |
Charlie Coyle 1 | Assists | Sam Gagner 1 |
N/A | Power Play Goals | N/A |
N/A | Short Handed Goals | N/A |
Devan Dubnyk .938 | Save Percentage | Anders Nilsson .886 |
Devan Dubnyk 30 | Saves | Anders Nilsson 31 |
Team | Shots | Goals | Power Play | Penalty Kill | Penalty Mins | Face Offs Won |
Minnesota | 36 | 5 | 0-2 | 1-1 | 2 | 26 |
Vancouver | 32 | 2 | 0-1 | 2-2 | 4 | 30 |