After the 21st minute opener, City struggled to create without the injured David Silva in their side as the lethal Sergio Aguero-Alvaro Negredo partnership failed to fire.
They piled on the pressure in the second half but could not break through a stubborn Sunderland defence marshalled brilliantly by Brown and John O’Shea.
Aleksandar Kolarov and Milner attempted plenty from distance but could not find the back of the net as Sunderland’s defence held out for the 90 minutes.
Manuel Pellegrini’s men missed out on the chance to go third in the league while Sunderland are now just three points from safety in 19th place.
21’ – COOL BARDSLEY: Bardsley capitalises on some shoddy defending from Demichelis and Milner to run in on goal and finish like an accomplished striker past Pantilimon.
33’ – AGUERO AGONY: The Argentine was free at the far post and Kolarov managed to find him by standing up a cross from the byline but Aguero mistimed his header and nodded it wide to miss out on the equaliser.
45’ – STODGY CITY: City struggled to create clear cut chances without Silva. Combined with a solid Sunderland defence meant the visitors toiled to give their strikers any opportunities.
77’ – BROWN BRILLIANCE: Wes Brown playing his first game in 22 months was absolutely colossal at the back and City just couldn’t find a way past him.
This is the third time in three seasons that Sunderland have beaten Manchester City at the Stadium of Light with a 1-0 victory.
Manchester City dominated possession with 63% and mustered 23 attempts on goal but only four were on target.
Sunderland had just five shots in the game but out of their two on target, were able to convert one into a priceless winning goal.
TALKING POINT: Why are Manchester City struggling away from home? Manuel Pellegrini’s City have dominated their home games but have struggled on their travels. This will be a concern for any side chasing the Premier League title and is something Pellegrini will have to sort out sooner rather than later.
MAN OF THE MATCH
Wes Brown (Sunderland): Set up the goal with a raking long ball down the line to Bardsley. Considering he hasn’t played Premier League football in 22 months, he defended like he had never been away.
Sunderland: Mannone 7, Celustka 7, Bardsley 8, Brown 9, O'Shea 8, Ki 9, Larsson 8, Colback 8, Johnson 7, Giaccherini 7, Fletcher 7. Subs: Altidore 7, Borini 6, Gardner, 7.
Man City: Pantilimon 6, Richards 6, Demichelis 5, Lescott 6, Kolarov 7, Milner 6, Toure 6, Garcia 4, Nasri 7, Aguero 6, Negredo 6. Subs: Navas 7, Dzeko 6, Zabaleta 6.