City have suffered their share of misadventures in their recent history, but losing at home to a side which did not manage a shot until the 94th minute takes some beating.
A first-half own goal from Sun Jihai consigned them to a third Premiership defeat in a row. Although they dominated before and after that, they showed a complete lack of composure in front of goal as Middlesbrough's rearguard efforts took them into the top half of the table for the first time this season.
"They never won a corner, never had a shot yet they took three points," Kevin Keegan said. "It was an incredible match to watch and it was hard to believe.
"We had an incredible number of chances, but never looked like scoring. They got in a block here, a flick there or someone took a wrong option."
The Middlesbrough manager, Steve McClaren, saw the irony in it. "By our own admission, we didn't play well today, but we showed we're a team of character and we defended magnificently," he said.
Keegan reacted to the Uefa Cup elimination in Poland in midweek by relegating Robbie Fowler and Steve McManaman to the bench. City had 3-0 defeats in their last two Premiership games to get out of their system and they had early opportunities to do so when Mark Schwarzer had to dive to keep out Nicolas Anelka's low drive and then clutch Paulo Wanchope's close-range header.
Shaun Wright-Phillips, who supplied the cross for that effort, was causing all sorts of problems down the right and a free-kick he won saw Sun float one in and Richard Dunne head over.
By contrast, Kevin Ellegaard, starting for only the second time in place of the injured David Seaman - with Peter Schmeichel's 17-year-old son, Casper, on the bench - was little more than a spectator.
Boro committed only Michael Rickets in attack. Despite that, they took the lead the only way they could - with a great deal of help from their hosts.
Juninho ran from deep with City retreating and found Gaizka Mendieta on the right. His cross looked harmless enough until Dunne miskicked and the ball bounced off Sun into his own net.
City could not quite believe they were behind and they had further frustrations before half-time when they were denied a penalty after Wanchope was held back by Danny Mills, and also saw two potentially goal-bound efforts blocked.
Joey Barton volleyed wide before the break and Wright-Philips did likewise a few minutes after it. The latter also drew the best save so far from Schwarzer when his shot came through a crowd of players, but generally City lacked the technique to cash in on their huge territorial advantage.
The arrival of Fowler did little to change that, as he shot wide when set up by Anelka. Fowler also had one blocked and volleyed over with three minutes to go. In injury time Boro could have even doubled their lead when Mendieta broke away and put their first shot of the match wide of the post.
Even by City's standards, that would have been too much to take.
Goal: Jihai og (30) 0-1.
Manchester City (4,4,2): Ellegaard 5, Sun 5 (Fowler 5, 65) , Dunne 5, Sommeil 6, Distin 7, Wright-Phillips 7, Barton 5 (Sibierski 5, 73), Reyna 5, Sinclair 5, Anelka 5, Wanchope 4. Substitutes not used: Schmeichel (gk) Wiekens, McManaman.
Middlesbrough (4-1-4-1): Schwarzer 6, Mills 7, Southgate 7, Cooper 7, Queudrue 5, Doriva 5 (Greening 6, 35), Mendieta 5, Boateng 6 (Nemeth 5, 72), Juninho 6, Zenden 4, Ricketts 4 (Riggott, 82). Substitutes not used: Nash (gk), Maccarone.
Referee: M Riley (West Yorkshire) 6.
Man of the Match: Southgate.Reuse content