The all-important goal was scored by Jeffrey Ntuka in the first half and hands AmaKhosi their fifth Vodacom Challenge crown, the last in 2006 when they beat Manchester United in a penalty shoot-out at the same venue.
City started with a near full-strength side as in came first-choice goalkeeper Shay Given, regular centre-back Richard Dunne and new signing Emmanuel Adebayor, while the Brazilian Robinho was on the bench.
A good turn from Mthokozisi Yende 25-yards out was spoiled by a subsequent shot that was way over the bar, while Nkosinathi Nhleko fired wide from the edge of the area.
City’s Javal Vidal was forced off after 15 minutes following an accidental clash with Itumeleng Khune, to be replaced by Tal Ben Haim.
Good work from Martin Petrov saw Craig Bellamy lay the ball back for Gareth Barry, but the England international shot straight at Khune, while George Lebese saw his effort blocked by a desperate City defence.
Dunne’s place in the starting line-up was always a risk having just returned from a knee problem and he did not make it through the first half, being replaced by Pablo Zabaleta after 36 minutes.
Nhleko forced the save of the first half when his side-footed effort looked destined for the bottom right-hand corner of Given’s goal, but the Republic of Ireland international stopper pushed it wide for a corner.
And from that corner Chiefs took the lead on 41 minutes. The ball came all the way through to Ntuka at the back post and he fired home through a crowd of players and into the net.
Ben Haim might have equalised almost immediately, but his header from Petrov’s corner flashed wide of goal.
Chiefs made a trio of changes at the break, bring on Abia Nale, Josta Dladla and Mandla Masango for George Lebese, Mthokozisi Yende and Tshepo Bulu respectively.
Adebayor was set free by Barry down the right and his first attempt at a cross was blocked. But he picked up the loose ball, beat a defender and fired a shot over the bar from eight yards.
Thabang Rooi was forced out of the game on what was proving a bad day for defenders when he stretched brilliantly to clear a low cross, but appeared to tear a muscle in the process.
He was replaced by Tinashe Nengomasha, while City used the break to introduce Robinho for Petrov.
Nale fired just wide from a free-kick with Given rooted to his goalline, while at the other end Bellamy had a legitimate claim for a penalty denied by referee Seechurn Rajindraparsad when he appeared to be held back by Zhiamo Jambo.
David Mathebula shot from 30-yards, but the effort was comfortable for Given, while City lost their third defender of the match when Nedum Onuoha had to leave the field after a cash of heads with Nhleko.
Adebayor directed a header goalwards, but Khune had it covered all the way, while Masango wasted an excellent chance for Chiefs when he was played in behind the City defence, but he couldn’t control the pass with just Given to beat and the ball eventually went out for a goal-kick.
Jose Torrealba, on for Nhleko, scuffed a shot Given when he night have done better, while Robinho shot inches wide from 18-yards.
Chiefs: 32. Itumeleng Khune – 20. Tshifiwa Mmbooi (28. Tlou Molekwane 61st), 4. Thabang Rooi (8. Tinashe Nengomasha 58th), 3. Thomas Sweswe, 29. Zhiamo Jambo – 23. Tshepo Bulu (22. Mandla Masango 46th), 24. David Mathebula, 33. Jeffrey Ntuka, 10. Mthokozisi Yende (9. Josta Dladla 46th), 17. George Lebese (11. Abia Nale 46th) – 19. Nkosinathi Nhleko (77. Jose Torrealba 75th)
Man City: 1. Shay Given – 36. Javal Vidal (26. Tal Ben Haim 15th), 22. Richard Dunne (5. Pablo Zabaleta 36th), 4. Nedum Onuoha (40. Vladimir Weiss 75th), 3. Wayne Bridge – 8. Shaun Wright-Phillips, 18. Gareth Barry, 34. Nigel de Jong, 17. Martin Petrov (10. Robinho 58th) – 39. Craig Bellamy, 25. Emmanuel Adebayor
Referee: Seechurn Rajindraparsad (Mauritius)
Yellow card: Itumeleng Khune 90