The Winnipeg Jets centre scored 17 seconds into overtime when he tipped a Jacob Trouba point shot past Edmonton goalie Ben Scrivens.
The victory extended Edmonton's winless streak to 11 games.
"I just went to the net," Perreault said. "(Trouba) shoots to the right of my stick, so I just kind of hopefully put my stick there and it went off it.
"I didn't see it going in."
Trouba also had a pair of the assists for the Jets (13-9-4), who were starting a three-game homestand.
Trouba said he wasn't thinking about avoiding being the team that finally lost to the Oilers (6-15-5).
"Every game's tough in this league, every team has good players," he said. "I don't think we really looked into the whole losing thing too much."
Ondrej Pavelec made 22 saves in the win, while Scrivens stopped 23 shots.
Dustin Byfuglien also scored for the Jets, and he and Perreault assisted on Trouba's goal.
Teddy Purcell and Ryan Nugent-Hopkins found the back of the net for the Oilers, who have yet to win a game against a Western Conference opponent this season.
Edmonton's 11-game winless streak includes four overtime losses.
"Getting a lot of pity points right now, but it doesn't mean a lot if we can't start getting in the win column," Scrivens said.
"Close, I mean, a lot of sayings about being close, right? So we've got to find a way to get over that hump. But I thought we were a lot closer to the game we expected out of ourselves tonight and saw a lot of really good things out of our top line and out of our power play, out of our defence.
"So some positives to build off of, but it's still frustrating to not be on the winning side again."
Edmonton's longest franchise winless streak is 14 games from Oct. 11 to Nov. 7, 1993.
Purcell had given Edmonton a 2-1 lead at 1:31 of the third period when the Oilers capitalized on a Winnipeg turnover. David Perron got around Jets defenceman Adam Pardy and fired a high shot that tipped off Purcell before hitting the crossbar and going in behind Pavelec. The goal was originally awarded to Perron.
Byfuglien tied the game at 16:54 when he redirected a Mark Stuart point shot from in front of the net.
"You can't move that guy," Edmonton coach Dallas Eakins said of the six-foot-five, 260-pound Byfuglien.
"It's impossible. And then when he gets positioned, it's sometimes hard to get his stick. Those tipped goals, they're tough to defend."
The Jets scored on their third shot of the game when Perreault skated into the right circle and then sent a pass back to Trouba in the slot for his third goal of the season at 12:33.
Pavelec was screened on a point shot from Nugent-Hopkins at 17:59 of the first period.
"Pav played well and we got a good win," Trouba said. "It's exciting, that's one of the most fun things about hockey is winning in overtime."
After Winnipeg killed off a cross-checking penalty to captain Andrew Ladd that carried over into the third period, Perron scored his fourth of the season at 1:31.
Eakins said he was concerned his players might feel a bit snake bitten after hitting the post twice and then having Pavelec make an outstanding save.
"That game's over if just one of those go in," Eakins said. "It's extremely frustrating not to get the win, but at the same time it's encouraging with how I thought we played a very mature game here on the road."
Winnipeg hosts Colorado on Friday, while Edmonton returns home to face San Jose on Sunday.
Notes — Byfuglien's assist on Trouba's goal was his 100th franchise point … Oilers right-winger Jordan Eberle was playing in his 300th NHL game … Jets sophomore centre Mark Scheifele played in his 100th NHL game … Winnipeg placed top defenceman Tobias Enstrom (lower-body) on injured reserve this week, while defenceman Grant Clitsome is out with an undisclosed injury. Defenceman Ben Chiarot was called up from the AHL St. John's IceCaps to play in his second career NHL game.