The Villans found themselves 2-0 up in the second half and will be wondering how they let their lead slip.
Despite the score at the break being 0-0, the opening 45 minutes between the two sides was entertaining. Both goalkeepers were called into action to prevent their teams from going behind.
Danny Ings had Villa's best chance in the first half after being put through on goal by Emiliano Buendía. The striker looked set to score but Jose Sa was on hand to save his subsequent effort on goal.
Wolves' best chance of the half came from the brilliance of Adama Traore, who dribbled through four or five Villa players before shooting straight at Emiliano Martinez.
The breakthrough came in the second half for the Villans as Ings nodded home John McGinn's cross - the Scot showing his strength after he rolled Romain Saïss before putting in the delivery.
Both teams began to get sloppy and give the ball away cheaply for spells in the second half. McGinn capitalised on this to make it 2-0 with a great effort from just outside the area after Hwang Hee-chan lost possession.
A goal from Romain Saïss pulled one back for Wolves after good work from both Ruben Neves and substitute Daniel Podence. The cross from the winger poked home by the centre-back.
Adama Traore did well following a scrappy passage of play to dink a cross into the back post and the header back across goal was perfect for Conor Coady to just head in the equaliser.
Just when you thought it was all over, Ruben Neves scored a dramatic late winner after his free-kick was deflected off of Matt Targett, wrong-footing Sa.
Here's how the players from both sides rated.
Aston Villa player ratings
1. Goalkeeper & defenders
Emiliano Martinez (GK) - 6/10 - Didn't have too much to do other than pick the ball out of his net, but did well to deny Adama in the first half at least.
Ezri Konsa (CB) - 6/10 - Was the best defender out of the three on the pitch - nowhere to be seen for the second goal however.
Axel Tuanzebe (CB) - 5/10 - Should have done better for Wolves' first goal.
Tyrone Mings (CB) - 4/10 - Not a 90 minutes to remember for the England international, was sloppy throughout.
2. Wing-backs & midfielders
Matty Cash (RWB) - 6/10 - Was a threat down the right, had a few half-chances that he failed to make the most of.
John McGinn (CM) - 8/10 - Covered every blade of grass, did excellently for both his goal and an assist.
Douglas Luiz (CM) - 7/10 - Did very well in the first half, began to fade before being brought off but overall a solid showing.
Emi Buendia (CM) - 6/10 - Was quality on the ball and looked comfortable in possession, perhaps should have stayed on to keep Villa on the front foot.
Matt Targett (LWB) - 3/10 - Another weekend to forget with yet another own goal, doesn't look anywhere near his best in the back 5.
Danny Ings (ST) - 7/10 - Took his goal well, could have had another had it not been for Jose Sa's great save.
Ollie Watkins (ST) - 6/10 - Lively in periods as he looked to make things happen but again failing to have a real impact on proceedings.
Marvelous Nakamba (CM) - 5/10 - A substitution that made sense at the time, but just felt like it dropped Villa a couple yards deeper when he came on.
Ashley Young (RB) - 4/10 - Came on and conceded three goals.
Jacob Ramsey (CM) - 5/10 - Showed his inexperience by giving away the cheap free-kick late on that resulted in the winner.
Wolves player ratings
5. Goalkeeper & defenders
Jose Sa (GK) - 7/10 - Did well to deny Danny Ings in the first half and looked assured throughout.
Max Kilman (CB) - 6/10 - Solid showing from the young defender, could add more to his game in the opposition box however.
Conor Coady (CB) - 7/10 - Best defensively out of the three and scored the equaliser.
Romain Saiss (CB) - 6/10 - Allowed McGinn to pin and roll him far too easily for the opener, made amends by pulling a goal back.
6. Wing-backs & midfielders
Nelson Semedo (RWB) - 6/10 - Got into good positions going forward but lacked the quality to make things happen.
Ruben Neves (CM) - 8/10 - Played a part in two out of the three goals. Always provides when it matters most.
Joao Moutinho (CM) - 7/10 - A typically calm performance we've come to expect from the veteran, even after going two down.
Fernando Marcal (LWB) - 5/10 - Another week to forget for the wing-back, didn't offer much offensively and struggled to contain Cash.
Adama Traore (ST) - 7/10 - Brightest spark for the away side, could have had a goal and did well in the build-up to the second.
Hwang Hee-chan (ST) - 6/10 - Was at fault for Villa's second and didn't have many chances at the other end.
Daniel Podence (LW) - 7/10- Came on and made a difference, did well to get a crucial assist.
Fabio Silva (ST) - 6/10- Brought on to boost attacking options.
Raul Jimenez (ST) - N/A