It was Staal's 14th goal of the season and extended his point streak to six games, giving him three goals and six assists during that span.
Staal's shot attempt was deflected high toward Scrivens after it caromed of Perron's stick as he tried to block it.
As Scrivens' effort to slap the puck away with his blocker was ineffective, Staal batted it past him and into the net to tie the game.
''It was a great team effort,'' Oilers coach Dallas Eakins said.
''I thought our penalty kill sparked us. There's a lot of sacrifice out there blocking those shots and it really got our bench ignited, and finally our power play was able to chip in and win us the game.''
Edmonton finished 1 for 4 on the power play and Carolina was 0 for 3.
The Hurricanes' continued ineffectiveness with the power play left coach Kirk Muller struggling to explain it.
''We've changed personnel around, tried guys in different positions, but at the end of the day, it's just not getting results,'' Muller said.
''Obviously, it hasn't been there. At the end of the day, you just (gotta) get the job done.''
Despite the loss, the Hurricanes are trying to stay positive.
''It's frustrating,'' Jordan Staal said.
''There's times when we play so well and do a lot of good things, playing smart and doing those things. Then there are times when it's just not working. It's frustrating for sure.''
Notes: Hurricanes forward Radek Dvorak did not return to play in the third period, suffering an upper body injury. ... At puck drop, Carolina's Jiri Tlusty was scratched with a lower-body injury which moved Nathan Gerbe into his spot on a line with Jordan Staal and Alexander Semin. ... Defenseman Mike Komisarek was also a healthy scratch and John-Michael Liles remained out with a concussion, missing his fifth straight game for the Hurricanes.