A superb Wolves move saw Daniel Podence find the net inside six minutes after a lightning quick start from the visitors.
But Leeds piled on the pressure and equalised through Rodrigo – and created enough chances to take the lead, but they entered half-time drawing 1-1.
Wolves were much better in the second half and controlled the game but failed to find that clinical edge before Leeds struck again. Brenden Aaronson found the net from close range to send Elland Road into raptures – although there was a suggestion that it was a Rayan Ait-Nouri own-goal.
The visitors looked for a way back into the game but flattered to deceive as they tasted defeat on the opening weekend.
Bruno Lage began the Premier League season in a 4-2-3-1 formation.
Joao Moutinho picked up an injury in training during the week and did not travel to Elland Road, meaning Wolves moved to a two in midfield and Hwang Hee-chan came in to start up front.
Captain Conor Coady was left among the substitutes and, alongside Willy Boly, the pair were part of a very inexperienced bench. Of the remaining seven players on the bench there was a total of five Premier League appearances, with four going to Luke Cundle and one to Chem Campbell.
Jesse Marsch also set up his team in a 4-2-3-1 formation, as Rodrigo started in the number 10 position behind Patrick Bamford.
Despite the hostile Elland Road atmosphere, the Wolves fans were in fine voice and the team responded. Some good work at winning the ball back quickly, particularly from Podence and Leander Dendoncker, saw the former take aim but fire wide.
And it only took six minutes for Wolves to take advantage of the fast start as an excellent team move was finished off by Podence. A sublime cross-field ball from Ruben Neves found Pedro Neto, who did well to shrug off defender Rasmus Kristensen. He crossed for Hwang who expertly nodded down to Podence, who adjusted to the awkward flight of the ball to find the top corner.
Following the goal, Leeds began piling on the pressure with the backing of the home crowd. Jose Sa was forced into a couple saves, including a good effort from distance by Aaronson.
Sa then came to claim a free-kick but made a mess of it and caught Kristensen in the air. Leeds appealed heavily for a penalty but nothing was given.
Wolves should have doubled their lead when Hwang flicked the ball over Diego Llorente and had a clear sight of goal, however he fired straight at Illan Meslier from 10 yards.
Leeds’ pressure paid off after 25 minutes but the goal was littered with Wolves mistakes. First, Ait-Nouri attempted to dribble out of his own box and lost the ball. He briefly won it back before Neves’ clearance deflected into Rodrigo’s path, who shot from a tight angle. The ball went through Sa, who got a hand to it, and should have saved it.
A good move did see Podence find Neto, who fired at Meslier. Wolves desperately needed to settle into the game and get a grip of possession, with 10 minutes remaining of the first half.
Another huge mistake from Sa saw him almost concede an own goal after a poor first touch, before he handed the ball to Bamford. A recovery tackle from Neves saved him from conceding.
Moments later, Morgan Gibbs-White gave the ball away and Jack Harrison crossed for Bamford, who was inches away from meeting it as he came sliding in.
On the stroke of half-time Wolves should have scored when Neto found Hwang and his lovely flick around the corner found Dendoncker. With just Meslier to beat he shot straight at the goalkeeper.
Wolves entered the break drawing 1-1, but with the pressure Leeds created they could have been in a losing position.
Wolves made a much better start to the second half and were able look after possession better. A cross did see Neto shoved to the floor by Kristensen, but the referee waved way the appeals.
Some unbelievable skill saw Neto find space and take aim, but his shot was blocked, before Podence’s follow up was also blocked. From the resulting corner, Dendoncker had a header tipped over the bar as Wolves continued to improve.
Wolves were playing exclusively in Leeds’ half and controlling the game, but struggled to find a goal. Ait-Nouri looked to race through but an excellent last-ditch tackle from Kristensen denied him.
With just 15 minutes of normal time to play the hosts took the lead. Bamford was fed the ball on the left and his low cross allowed Aaronson to finish from close range after he got the wrong side of Ait-Nouri.
Leeds continued to push and should have scored a third but Sa leaped into a fabulous save to deny Bamford’s header from five yards.
A lack of options on the Wolves bench meant Lage waited until the 85th minute to make his first substitution, as Campbell replaced Hwang. It was only the 19-year-old's second Premier League appearance.
Wolves huffed and puffed for an equaliser but struggled to create any clear openings as they fell to defeat.
Wolves: Sa, Jonny, Collins, Kilman, Ait-Nouri, Neves, Dendoncker, Gibbs-White, Podence, Neto, Hwang (Campbell, 85).
Subs not used: Sarkic, Coady, Boly, Mosquera, Bueno, Cundle, Ronan, Hodge.
Leeds: Meslier, Kristensen, Llorente, Koch, Struijk, Adams, Roca (Greenwood, 73), Aaronson (Summerville, 84), Harrison, Rodrigo (Klich, 64), Bamford (Gelhardt, 84)
Subs not used: Klaesson, Hjelde, Drameh, Gray, Gyabi.