By Peter ShuttleworthBBC Sport Wales at the Liberty Stadium
Manchester City lost their Premier League lead for the first time in five months as their title hopes were dented by superb Swansea City.
Unmarked substitute Luke Moore headed the hosts' winner inside the final seven minutes as he guided in Wayne Routledge's pin-point right-wing cross.
Manchester City, who drop a point behind rivals Manchester United following the Red Devils' win over West Bromwich Albion, did have a late Micah Richards goal ruled out for offside in a dramatic final few minutes.
Swansea could have won more comfortably, visiting keeper Joe Hart saving Scott Sinclair's early penalty.
2 Apr/31 Mar
West Brom (h)
Aston Villa (h)
Man City (a)
Man Utd (h)
But the Welsh side will settle for a single-goal victory against the league leaders that will rank alongside their January triumph over Arsenal as one of the most famous results in their 100-year history.
More importantly, it edges Swansea closer to Premier League survival, having reached a tally of 36 points that would have seen them retain their top-flight status in 10 of the last 13 seasons.
But, as much as Swansea celebrate, Roberto Mancini's men will feel frustration at having squandered their top-of-the-table berth with a below-par performance.
Mancini confident of regaining top spot
The visitors were dominated for the majority of the first half and Routledge had already blasted a close-range shot over Hart's crossbar when the Swansea winger won a penalty after being brought down in the penalty area inside five minutes.
Hart was penalised but immediately made amends, the England keeper diving to his right to save Sinclair's weak spot-kick.
It was the first time Sinclair had missed a penalty in 14 attempts but the England Under-21 winger did not look confident as he slid the ball too close to Hart.
Routledge, replacing the suspended Nathan Dyer, was again proving to be the main tormentor.
He tested Hart's reactions when he flicked Sinclair's corner goalwards from close range, only for the England keeper to gather with consummate ease.
Swansea top scorer Danny Graham then turned to shoot Gylfi Sigurdsson's incisive pass wide as the hosts dominated territory and possession against a Manchester City side feeling the effects of their midweek Europa League defeat in Porto.
DID YOU KNOW?
Manchester City have won only two of their last eight Premier League away games
Mancini said before the game he wanted his side to break Chelsea's title-winning points record of 95 set in 2005. But they were restricted to half chances against a side that have also taken points off Arsenal, Chelsea and Tottenham Hotspur at the Liberty Stadium this season.
Yaya Toure fumbled as he enjoyed a rare sight of Swansea's goal, David Silva fired harmlessly wide and Mario Balotelli summed up the visitors' frustrations as the enigmatic Italian tried his luck from virtually the halfway line with a wayward effort.
Mancini even went to the lengths of making a first-half tactical substitution, as £35m striker Sergio Aguero was introduced in place of Gareth Barry in an effort to spark the Manchester side into life.
Brendan Rodgers savours 'wonderful day' for Swansea
But it was to no avail as Swansea continued to create the better chances and Graham's low driven ball across the six-yard box should have been tapped in by Joe Allen but the Swans midfielder failed to connect and it was cleared by Kolo Toure, captain for the day in Vincent Kompany's absence.
The visitors had a penalty appeal waved away by referee Lee Mason after Balotelli went down under a challenge by Allen but he did not appear to be touched by the Wales midfielder and, in any case, fell outside the box.
But, with virtually his first touch of the game after replacing Graham, Moore claimed victory when he headed in only his second league goal of the season at the far post.
Mancini's men responded but, after having a snapshot well saved by Swans keeper Michel Vorm, Richards had an effort disallowed by assistant referee Sian Massey for offside.
And Swansea kept out the late bombardment to claim not only a famous scalp, but almost certainly their Premier League status too - with 10 games still remaining.
Full Time The game is over, as the referee blows his whistle.
Free kick awarded for a foul by Angel Rangel on Mario Balotelli. The ball is delivered by Gnegneri Toure Yaya, Adam Johnson takes a shot. Blocked by Steven Caulker. Corner from left by-line taken by Gnegneri Toure Yaya.
Edin Dzeko takes a shot. Save by Michel Vorm.
Micah Richards is ruled offside. Michel Vorm restarts play with the free kick.
Substitution Garry Monk is brought on as a substitute for Wayne Routledge.
Substitution Edin Dzeko replaces David Silva.
Headed effort from inside the area by Sergio Aguero misses to the left of the goal.
Kolo Toure takes a shot. Save made by Michel Vorm. Samir Nasri takes the inswinging corner, clearance by Ashley Williams.
Mario Balotelli takes a shot. Save by Michel Vorm. Corner taken by Samir Nasri, Luke Moore manages to make a clearance.
Substitution Adam Johnson is brought on as a substitute for Nigel De Jong.
Assist by Wayne Routledge.
82:46 Goal scored
Goal - Luke Moore - Swansea 1 - 0 Man City Luke Moore grabs a headed goal from close in. Swansea 1-0 Man City.
Unfair challenge on Joe Allen by Samir Nasri results in a free kick. Joe Allen restarts play with the free kick.
Foul by Steven Caulker on Sergio Aguero, free kick awarded. Free kick taken by Kolo Toure.
Substitution Danny Graham goes off and Luke Moore comes on.
Mario Balotelli takes a shot. Michel Vorm makes a save.
Wayne Routledge takes a shot. Save made by Joe Hart.
Direct free kick taken by Steven Caulker.
Booking Mario Balotelli goes into the referee's book.
Mario Balotelli concedes a free kick for a foul on Gylfi Sigurdsson.
Mario Balotelli takes a shot. Michel Vorm makes a save.
Danny Graham gives away a free kick for an unfair challenge on Gnegneri Toure Yaya. Direct free kick taken by Nigel De Jong.
Foul by Samir Nasri on Scott Sinclair, free kick awarded. Free kick taken by Neil Taylor.
Outswinging corner taken by Gylfi Sigurdsson, Steven Caulker takes a shot.
Outswinging corner taken by Gylfi Sigurdsson from the right by-line played to the near post, clearance made by Stefan Savic.
Micah Richards takes a shot. Michel Vorm makes a save.
Free kick awarded for a foul by Micah Richards on Scott Sinclair. Neil Taylor takes the direct free kick.
The offside flag is raised against Danny Graham. Free kick taken by Joe Hart.
Gnegneri Toure Yaya gives away a free kick for an unfair challenge on Scott Sinclair. Leon Britton restarts play with the free kick.
Samir Nasri takes a shot. Save by Michel Vorm.
Gael Clichy takes a shot. Save by Michel Vorm.
Wayne Routledge gives away a free kick for an unfair challenge on Gael Clichy. Free kick taken by Nigel De Jong.
The assistant referee flags for offside against Wayne Routledge. Free kick taken by Joe Hart.
Short corner worked by Gylfi Sigurdsson.
Gnegneri Toure Yaya takes a shot. Neil Taylor gets a block in.
Gylfi Sigurdsson takes a inswinging corner to the near post, Mario Balotelli manages to make a clearance.
Mario Balotelli gives away a free kick for an unfair challenge on Steven Caulker. Direct free kick taken by Michel Vorm.
Effort on goal by Sergio Aguero from deep inside the penalty area misses to the right of the target.
Free kick awarded for a foul by Angel Rangel on Mario Balotelli. Direct free kick taken by David Silva.
The referee gets the second half started.
45:00 +1:20 Half time
Half Time It is the end of the first-half.
Corner taken by Samir Nasri.
Corner from the left by-line taken by Samir Nasri, Danny Graham manages to make a clearance. Inswinging corner taken from the left by-line by Samir Nasri, save made by Michel Vorm. Inswinging corner taken by David Silva from the right by-line, Nigel De Jong takes a shot. Ashley Williams gets a block in. David Silva produces a left-footed shot from the edge of the area and misses to the left of the goal.
Gnegneri Toure Yaya takes a shot. Blocked by Steven Caulker. Samir Nasri decides to take a short corner.
Samir Nasri takes a short corner.
Mario Balotelli takes a shot. Joe Allen gets a block in.
Gael Clichy challenges Wayne Routledge unfairly and gives away a free kick. Direct free kick taken by Angel Rangel.
Mario Balotelli gives away a free kick for an unfair challenge on Angel Rangel. Free kick taken by Angel Rangel.
Direct free kick taken by Kolo Toure.
Substitution Sergio Aguero replaces Gareth Barry.
Gylfi Sigurdsson challenges Gareth Barry unfairly and gives away a free kick.
Angel Rangel takes a shot. Blocked by Kolo Toure.
Unfair challenge on Wayne Routledge by Stefan Savic results in a free kick. Free kick taken by Angel Rangel.
Long range shot by Mario Balotelli goes wide right of the target.
Mario Balotelli has an effort at goal from a long way out that misses to the right of the target.
Effort on goal by Danny Graham from inside the box misses to the right of the target.
Unfair challenge on Wayne Routledge by David Silva results in a free kick. Angel Rangel takes the free kick.
Effort from inside the area by Mario Balotelli misses to the right of the target.
Free kick awarded for an unfair challenge on Gnegneri Toure Yaya by Steven Caulker. Free kick taken by Kolo Toure.
Ashley Williams restarts play with the free kick.
Booking Nigel De Jong is shown a yellow card for unsporting behaviour.
Nigel De Jong gives away a free kick for an unfair challenge on Wayne Routledge.
Gylfi Sigurdsson takes a shot. Blocked by Samir Nasri.
Foul by Gareth Barry on Danny Graham, free kick awarded. Angel Rangel takes the free kick.
Steven Caulker concedes a free kick for a foul on Gareth Barry. Joe Hart takes the free kick.
Corner taken right-footed by Gylfi Sigurdsson from the right by-line, Micah Richards manages to make a clearance.
Gylfi Sigurdsson decides to take a short corner.
Kolo Toure gives away a free kick for an unfair challenge on Scott Sinclair. Ashley Williams restarts play with the free kick.
David Silva handles the ball and concedes a free kick. Michel Vorm takes the direct free kick.
Corner taken by Gylfi Sigurdsson, Ashley Williams takes a shot. Save made by Joe Hart.
Placed penalty taken by Scott Sinclair saved by Joe Hart. Swansea 0-0 Man City.
Joe Hart gives away a Penalty for an unfair challenge on Wayne Routledge.
Effort from the edge of the area by Wayne Routledge goes wide of the left-hand upright.
Free kick awarded for an unfair challenge on Gnegneri Toure Yaya by Neil Taylor. Nigel De Jong takes the direct free kick.
The referee gets the game started.
Live text and data provided by The Press Association
This page is best viewed in an up-to-date web browser with style sheets (CSS) enabled. While you will be able to view the content of this page in your current browser, you will not be able to get the full visual experience. Please consider upgrading your browser software or enabling style sheets (CSS) if you are able to do so.