After Jason Pominville was stopped by Viktor Fasth, Hall skated in and shot the puck between the pads of Darcy Kuemper for the winner.
"I'm proud of them. It would have been easy to pack it in but the guys kept scraping and clawing," said Oilers head coach Dallas Eakins. "They were playing an excellent defensive game but we stuck to it."
Zach Parise and Pominville each posted a goal and an assist and Jared Spurgeon also scored for the Wild, who have dropped their past three. Kuemper turned away 23 shots in the loss.
"You've got to hold the team in there when you get that kind of pressure and that didn't happen tonight," said Kuemper. "I didn't feel off my game or anything, it was just one of those nights where things didn't go my way."
Trailing by two goals, the Oilers made it a 3-2 game at 11:06 of the third as Andrew Ference threw it on net from a sharp angle at the right side and Perron tipped it in.
The Oilers then tied the game four minutes later as Ference dumped the puck on net from mid-ice and Kuemper was unable to control it with Eberle chipping the rolling puck past the glove.
Parise scored at 11:07 on the power play to get Minnesota on the board, and the team made it a 2-0 game at 13:46 when Spurgeon's shot from the right point hit off an Oiler and went in.
Less than two minutes later the Wild took a 3-0 lead when Pominville scored from the left circle for his 24th of the season, but Petry got one in from a sharp angle at the right side that hit off a Wild and went in at 16:55 of the first.
Fasth stopped nine shots in the second period, while Kuemper made six saves.