Ricardo Gardner's first league goal in six seasons and a Richard Dunne own goal lifted Bolton Wanderers off the bottom of the table and out of the bottom three.
Substitute Gardner's 77th minute opener paved the way for Bolton's first win at the Reebok since the opening day of the season and only their second in 11 games.
And Dunne's blunder with two minutes remaining condemned Manchester City to their fourth straight league defeat.
Wanderers' hopes of ending their wretched run at home were not helped by the loss of record signing Johan Elmander before kick-off, with the £11million striker failing a late fitness test on a groin problem.
And it was City who started the brighter when Robinho flashed an early effort over the crossbar.
Both sides looked short on confidence and clear-cut chances were at a minimum, although Mustapha Riga should have done better when goalkeeper Joe Hart's poor clearance fell to him.
Fabrice Muamba was next to let fly from distance as Wanderers began to knock the ball around nicely.
Matt Taylor's snap-shot then lacked the power to trouble Hart in the City goal after Gary Cahill's long free-kick had caused panic in the visitors' box.
But it was City who created the best two chances of a poor first half.
First, Stephen Ireland was denied by Jussi Jaaskelainen after the midfielder had been played in by Ched Evans' intelligent pass four minutes before the break.
Then the Wales striker went close himself, only to be denied by a fine Jaaskelainen stop, who sprang to his feet immediately to save Shaun Wright-Phillips' diving header.
Robinho forced another good stop from Jaaskelainen after the restart.
Kevin Nolan then went close for Wanderers, forcing Hart into a good stop, before referee Mike Riley waved away Bolton appeals for a penalty when Dunne appeared to impede Taylor in the area on 64 minutes.
But Wanderers did not have to wait much longer for an opener when Gardner scored Bolton's first goal in nearly six hours of football when he swept home Gretar Steinsson's low cross via the crossbar.
Dunne, under pressure from Kevin Davies, then turned Gardner's low cross into his own net to cap a miserable day for Mark Hughes' side.