Manchester City overcame Wolves 3-1 at the Etihad Stadium despite having Vincent Kompany sent off to restore their five-point advantage at the top of the Barclays Premier League.
City were 2-0 up after 67 minutes through Edin Dzeko and Aleksandar Kolarov, before Stephen Hunt pulled back a goal from the spot with 15 minutes remaining following Kompany's dismissal, but substitute Adam Johnson wrapped up the victory in stoppage time.
Wolves, who lost 5-2 to the same opposition in the Carling Cup in midweek, could only partially clear a corner from Kolarov in the second minute and the ball came to Samir Nasri, who unleashed a volley which Wayne Hennessey tipped over the bar.
At the other end Kevin Doyle flashed his effort across the face of goal. Sergio Aguero drew a good save out of Hennessey with a turn and strike from outside the box and moments later looked set to put City in front, but miskicked as he attempted to stroke home Micah Richards' delivery.
Silva saw his strike from Nasri's cross blocked and City fans felt Richard Stearman had fouled Dzeko in the area, but referee Stuart Attwell waved play on. Four minutes before the break Silva put Dzeko through on goal, but the Bosnian's shot was turned around the post by Hennessey.
Seven minutes after the restart, the hosts made the breakthrough as Hennessey made a hash of dealing with a backpass.
Aguero challenged the goalkeeper and the ball spun to Dzeko, who lofted it into the net for his fifth in three games.
City had their second when Hennessey parried Silva's shot and Kolarov tucked away an easy finish.
City appeared to be cruising, but they were reduced to 10 men when Hart spilled a shot from Adlene Guedioura and Kompany impeded Doyle.
Hunt dispatched the spot-kick, but City made sure at the death as Adam Johnson collected Yaya Toure's pass and fired in.