The striker’s 12th goal of the season sealed a sixth straight victory for Nuno Espirito Santo’s side as they reasserted their dominance in the league.
They host struggling Sunderland on Saturday as overwhelming favourites to return to the Premier League for the first time since 2012.
That relegation sparked a tumble into League One a year later but it is rivals Birmingham who need to worry about that now.
Defeat kept Blues, who had Harlee Dean sent off late on, in the drop zone on goal difference after a powderpuff performance and they have just one win in eight games.
And any hopes the hosts had of frustrating the leaders evaporated after eight minutes when they gifted Wolves the winner.
Jonathan Grounds passed straight to Ivan Cavaleiro on the edge of the box and he forced David Stockdale into a fine save before the goalkeeper turned away Diogo Jota’s follow up.
But he could not keep out Bonatini’s third effort as it crept over the line despite Michael Morrison’s desperate attempt to clear.
It allowed Wolves to seize control and Marc Roberts underlined the hosts’ frustration when he clattered into Jota and escaped with a yellow card.
Cavaleiro fired over before being denied by Stockdale’s low save after neat build-up play carved Birmingham open.
Wolves remained comfortable throughout a first half where the hosts barely threatened.
Blues improved after the break and saw more of the ball even if they lacked punch up front and Wolves wasted two fine openings to double their lead.
First, Jota failed to find a finish after he wriggled into the area and then, after 64 minutes, Stockdale needed to be alert to keep out Helder Costa after the substitute raced through.
Tempers then flared and Alfred N’Diaye was booked for a push on Maikel Kieftenbeld but it at least woke Birmingham up and they began to press, without luck.
They failed to seriously test Wolves and their hopes ended when Dean was dismissed with seven minutes left, collecting a second booking after shoving Jota.