Roberto Mancini's side were second-best for much of the game and needed a first-half penalty save from Joe Hart, who kept out Scott Sinclair's strike, just to remain on level terms.
And with seven minutes remaining substitute Moore popped up to clinch one of the shock results of the season with a header from a Wayne Routledge cross.
City pressed hard for an equaliser in the closing moments, but there was no way through and their first defeat in five matches allowed bitter rivals Manchester United, who beat West Bromwich Albion 2-0 on Sunday, to move one point above them at the top.
Swansea have enjoyed a fine first season in the Premier League and Mancini showed respect for Brendan Rodgers' outfit by moving Yaya Toure on to Swansea playmaker Leon Britton in a bid to stop the home side from controlling the game.
However, the tactical switch failed to have the desired effect as Swansea dominated possession for long periods.
The Swans earned themselves a sixth-minute penalty when Sinclair's through ball was collected by Routledge.
Hart closed in, but clipped the heels of the former Newcastle man and Lee Mason had no option but to award a spot kick.
Sinclair's penalty was on target but weakly struck and Hart was equal to it.
A Routledge header was Swansea's next decent opportunity, but once again Hart made no mistake.
It was one-way traffic and Mancini's side had no answer to the slick Swansea passing that has caught so many off guard this season.
Mancini was growing increasingly frustrated and when City midfielder Nigel De Jong hauled down Routledge, Mason gave out his first yellow card of the game.
Danny Graham's shot on the turn brought to an end another period of intense pressure from last season's Championship play-off winners.
With 10 minutes of the first half remaining, Gareth Barry was hauled off by Mancini and Sergio Aguero brought on to replace him.
Barry, clearly unhappy, had a few words with coach David Platt as he left for the dugout.
A deep cross from Angel Rangel, five minutes before half time, was cleared under pressure by Kolo Toure and as the half came to an end, the visitors enjoyed their best spell, with David Silva blasting just wide.
Squeezing further up the field at the beginning of the second half, City were a far greater force without ever threatening in the final third until Mario Balotelli's through ball found Aguero on the edge of the box. His shot was crisp but off target.
Michel Vorm was called into action to deny Samir Nasri and then Aguero as City pushed on in pursuit of the opening goal.
They thought their chance had come when Balotelli appeared to be brought down by Joe Allen, but the Italian tumbled too easily and Mason waved play on.
Steve Caulker headed just wide 19 minutes from time as Swansea came back into the game and with seven minutes left, they struck the killer blow.
Gylfi Sigurdsson stole the ball in midfield and after a patient build-up, Routledge picked out Moore who made no mistake with his header.
Micah Richards thought he had snatched an equaliser, two minutes from time, but his header was ruled out for offside.