A first defeat in nine matches for Villa leaves them outside the playoff places, meanwhile, as boss Steve Bruce's wait for a league win at this ground stretches to a sixth game.
Danny Batth climbed highest to nod a dangerous header across towards goal soon after, but none of his teammates could make a telling touch on the ball.
Roderick Miranda fired into the side-netting and Kodjia had a small penalty appeal rejected as the first half transpired, while Matt Doherty was also left unhappy when going down inside the opposition box.
Cavaleiro then skewed horribly wide following a positive attacking move, though Wolves did make a deserved breakthrough 10 minutes into the second half through a fine left-footed finish from Jota, taking advantage of a costly Ahmed Elmohamady slip in the box.
Wanderers' second came courtesy of Bonatini, who found the net from an acute angle following some good play from Jota - his fifth goal in the Championship this season.
Johnstone produced a double save to deny the two goalscorers in the final 13 minutes and, a Robert Snodgrass free kick against the crossbar aside, the visitors did not truly look like finding a response.