Edin Dzeko appeared to have put Manuel Pellegrini's side on course for the three points after his superb strike gave City the lead early in the second half.
But Cardiff hit back when Aron Gunnarsson tucked home from close range just before the hour, then Campbell twice headed home from corners to spark scenes of delirium at Cardiff City Stadium.
Alvaro Negredo got his first goal for City in stoppage time, but it was too little, too late.
Few had given last season's Championship winners any hope of getting a result after City had opened their campaign so impressively against Newcastle with a 4-0 win.
But Malky Mackay's men worked tirelessly to deny their big-spending visitors the space to work their magic and they ended the game as deserving winners.
Prior to kick-off a section of the Welsh club's fans had walked through the city to express opposition to the changing of the club's kit from blue to red but, come the final whistle, fans wearing both colours joined in euphoric celebrations.
For Pellegrini, there was a reminder that his will not be an easy task, and this poor display means they remain without a win from three Premier League visits to south Wales.
Indeed, they never allowed their visitors to settle, with Joleon Lescott and Javi Garcia showing particular discomfort against Campbell's pace.
Cardiff could have led after just 30 seconds. David Silva and Gael Clichy stood off Craig Bellamy and Lescott missed the Welshman's ball into the box.
It eventually fell to Campbell, who went down as Fernandinho closed in, but the appeals were waved away by referee Lee Probert.
Lescott was all at sea again a few minutes later. The defender was robbed of possession by Gary Medel and then needlessly fouled Kim Bo-kyung to give Peter Whittingham a free-kick which he fired just wide.
Whittingham then picked out Steven Caulker from a set-piece to force Joe Hart into a save, although the flag was up for offside.
Cardiff's tigerish snapping and harrying meant City could not find their stride and it took 20 minutes for them to unlock the home defence, but Andrew Taylor was on hand to clear from Silva's astute ball across the six-yard box.
Dzeko should have given them the lead just before the half hour but failed to control Yaya Toure's excellent threaded pass.
David Marshall held an ambitious effort from Silva, before Ben Turner blocked brilliantly as Toure fired at goal as City steadily assumed control.
However, Pellegrini's men should have trailed at the interval.
Campbell escaped the attentions of Garcia and Lescott far too easily from Gunnarsson's lofted pass, but could not get a shot away cleanly, and seconds later Garcia's woeful header forced Hart to intervene.
Cardiff looked as though they would rue those missed opportunities when City took the lead just six minutes into the second half.
Toure found Aguero and the Argentinian's lovely lay-off set-up Dzeko to blast a strike beyond Marshall's despairing dive.
Cardiff refused to crumble and hit back eight minutes later. Clichy gave Kim far too much room on the right of the area and, although Hart saved from Campbell, he could do little to prevent Gunnarsson firing home the rebound.
City pressed and pressed in an effort to restore their advantage but were met by stern resistance as Silva was crowded out before firing over, and Caulker blocked an Aguero strike.
The rearguard effort gained its reward with 11 minutes to go, Whittingham swung over a pinpoint corner and Campbell snuck away from Pablo Zabaleta at the far post to nod in.
The former Manchester United and Sunderland striker then completed the job with five minutes to go as he again escaped Zabaleta to find the net and write his name into Cardiff history.
Negredo pulled one back but it was not enough.
Source: PA
Source: PA