Ales Hemsky and Ladislav Smid also scored for Edmonton (3-6-1), while Devan Dubnyk made 29 saves.
Tomas Plekanec, Brendan Gallagher, and Brian Gionta scored for Montreal (5-4-0). Carey Price made stopped 28 of 32 shots.
The teams were even on shots at 32.
Tuesday's game was Edmonton's sixth straight on the road. They went 2-3-1 on that stretch and sit in last place in the Pacific Division.
The Habs were coming off a tough 2-1 loss to the Predators.
Plekanec put the Canadiens on the board first when he scored a power play goal at 16:36 of the first period.
Andrei Markov started the play, showing great vision with a diagonal cross-ice pass from the blue line. Plekanec made no mistake slotting home his fourth goal of the season between Dubnyk's legs. Rookie Michael Bournival got an assist on the play.
Gallagher increased Montreal's lead less than two minutes later. Gallagher intercepted a poor clearance by the Oilers' Jones and beat Dubnyk glove-side with a quick wrist shot.
The Oilers answered with two goals of their own in quick succession. Hemsky scored the first at 12:50 of the second period, getting around Alex Galchenyuk with ease and beating Price above the shoulder.
Smid then tied the game 2-2 with his first of the year, when he put the rebound of a Ryan Nugent-Hopkins shot into a gaping net at 15:37.
Edmonton completed the comeback when Petry scored at 7:59 of the third. Nugent-Hopkins pretended to shoot on a 2-on-1, but instead dished the puck to Petry who made no mistake from close range.
Jones put the game out of reach, scoring the eventual game-winner at 9:57. Gionta scored a late consolation goal for the Canadiens with two seconds remaining.
The injury-plagued Canadiens were without the services of Max Pacioretty, Brandon Prust and Daniel Briere. All three forwards sustained injuries last week.
The Oilers were also missing star forward Taylor Hall and veteran Ryan Smyth. Hall, who injured his knee on Saturday in the Oilers' win over Ottawa, is expected to be out four weeks. Jones replaced him in the lineup.
Rookie defenceman Nathan Beaulieu, who was sent down to Hamilton on the weekend, was recalled by the Canadiens and played in place of Jarred Tinordi. Beaulieu finished the game with three blocked shots and 10:21 of ice time.
The Oilers lost 4-1 to the Canadiens on Oct. 11 in Edmonton - the Oilers' last home game before their two-week road trip. They welcome the Washington Capitals to Rexall Place on Thursday night.
Montreal hosts the Anaheim Ducks next on Oct. 24.