Match ends, Swansea City 0, Cardiff City 1.
Cardiff City won the south Wales derby and dealt a huge blow to Swansea's hopes of automatic promotion with a hard-fought 1-0 victory at Liberty Stadium.
Defender Aden Flint headed the Bluebirds in front, reacting when the Swans failed to deal with a long throw.
Kieffer Moore missed a golden chance to double the lead and Swansea poured on the pressure in the second half.
However, Andre Ayew hit the inside of the post with Swansea's best chance.
The victory lifts Cardiff to eighth in the Championship, four points off the play-off berths, while Swansea stay third.
South Wales derbies are always worth a watch because of the intensity of the rivalry, but the contest takes on even more meaning when the stakes are high, which was certainly the case here with promotion still a realistic aim for both sides.
Swansea made four changes to the side hammered at Bournemouth in midweek with Marc Guehi, Jay Fulton and Jake Bidwell recalled and Morgan Whittaker given a first Swans start in a huge contest.
The visitors were hit by an injury to Perry Ng that forced midfielder Joe Ralls into an unfamiliar wing-back role, while Harry Wilson was recalled to lead the line with his Wales team-mate Moore.
Swansea had utterly dominated Cardiff when winning the reverse fixture 2-0 in December, and it was the hosts who had the first chance, but Dillon Phillips tipped Conor Hourihane's free-kick around the post, before Hourihane was forced off by injury after only 18 minutes.
By then the Swans trailed as they failed to clear a Will Vaulks long throw, with Freddie Woodman producing a fantastic save to deny Marlon Pack, only to be helpless as Flint reacted quickest to head home.
No defender in the Premier League or English Football League has scored more goals since 2014 than Flint, who has 38 over that period.
Cardiff's set-pieces and long throws are always a threat, but the size difference between the teams was underlined several times in the first half with Flint heading wide from another long throw and Sean Morrison heading over from a Vaulks free-kick.
Vaulks was central to everything in the first period and his smart through ball found Leandro Bacuna, but Woodman parried away his effort, before Bacuna was just short of turning in Moore's cross.
Cardiff perhaps deserved more for such a dominant display, but Moore missed a golden chance after Woodman's mistake, rounding the goalkeeper only to produce a weak shot that Ryan Bennett gratefully cleared off the line.
Swansea had lost only one of their past 15 league games at home and started the second half well, with Whittaker testing Phillips and Ayew curling a free-kick just wide.
Cardiff missed a big chance on the counter-attack on 65 minutes when Wilson's curling effort was saved by Woodman, along with the rebound, before sustained Swansea pressure saw Ayew head against the inside of the post from Fulton's cross.
Swansea's pressure was relentless as Korey Smith fired over and shot after shot was blocked, with Cardiff's defence superb as they literally threw their bodies in the way of shots to maintain their lead and the south Wales bragging rights.
The Swans finished the game virtually camped in the Cardiff half, with Whittaker missing a chance late on as he fired just wide after finding space in the box, while Lowe's effort was saved by Phillips on a day where the ball just would not fall for the Swans.
Swansea head coach Steve Cooper:
"There's great disappointment because it's a massive game for everybody and we have come out on the wrong end of it.
"The way it's happened as well, at the moment it's difficult to get our head around it. We have conceded off a long throw which we knew was coming.
"Then it's been all us. We have played some brilliant football, we have created lots of chances, we have dominated every single stat you want to dominate apart from the most important one and that's the score. It's a tough one to take."
Cardiff manager Mick McCarthy:
"We've had to be really solid as a defensive unit.
"Maybe it was our night, you carry a bit of luck and I am happy to carry a bit of luck.
"It was a very, very hard earned victory and we are very happy.
"It was a big win, we know how big a game this is in this part of the world and we showed that togetherness again today, how much it meant to the players to get the win."
Line-ups
Swansea
Formation 3-4-1-2
- 1Woodman
- 26NaughtonSubstituted forLoweat 76'minutes
- 2Bennett
- 5Guehi
- 23Roberts
- 6FultonSubstituted forDhandaat 80'minutes
- 8Grimes
- 24BidwellSubstituted forManningat 76'minutes
- 14HourihaneSubstituted forSmithat 18'minutes
- 10A Ayew
- 17Whittaker
Substitutes
- 3Manning
- 7Smith
- 9Lowe
- 15Routledge
- 18Hamer
- 21Dhanda
- 22Latibeaudiere
- 31Cooper
- 44Cabango
Cardiff
Formation 3-4-3
- 1Phillips
- 4MorrisonBooked at 45mins
- 5Flint
- 30BrownBooked at 90mins
- 28Sang
- 6VaulksBooked at 81mins
- 21Pack
- 8Ralls
- 7BacunaSubstituted forMurphyat 66'minutes
- 10Moore
- 23WilsonSubstituted forOjoat 84'minutes
Substitutes
- 11Murphy
- 12Smithies
- 15Williams
- 19Watters
- 27Ojo
- 29M Harris
- 33Hoilett
- 40Colwill
- 41Bowen
- Referee:
- Paul Tierney
Match Stats
- Possession
- Home75%
- Away25%
- Shots
- Home23
- Away9
- Shots on Target
- Home1
- Away7
- Corners
- Home11
- Away0
- Fouls
- Home7
- Away14
Live Text
Post update
Full Time
Second Half ends, Swansea City 0, Cardiff City 1.
Post update
Ryan Bennett (Swansea City) wins a free kick in the defensive half.
Post update
Foul by Kieffer Moore (Cardiff City).
Post update
Foul by Matt Grimes (Swansea City).
Post update
Kieffer Moore (Cardiff City) wins a free kick in the defensive half.
Post update
Attempt saved. Morgan Whittaker (Swansea City) left footed shot from outside the box is saved in the top left corner. Assisted by Connor Roberts.
Post update
Attempt missed. Yan Dhanda (Swansea City) right footed shot from the centre of the box is just a bit too high. Assisted by Matt Grimes following a set piece situation.
Booking
Ciaron Brown (Cardiff City) is shown the yellow card for a bad foul.
Post update
Morgan Whittaker (Swansea City) wins a free kick on the right wing.
Post update
Foul by Ciaron Brown (Cardiff City).
Post update
Attempt missed. Morgan Whittaker (Swansea City) left footed shot from the centre of the box is close, but misses to the left.
Post update
Attempt blocked. Morgan Whittaker (Swansea City) left footed shot from the centre of the box is blocked.
Post update
Attempt blocked. André Ayew (Swansea City) left footed shot from outside the box is blocked.
Substitution
Substitution, Cardiff City. Sheyi Ojo replaces Harry Wilson.
Post update
Corner, Swansea City. Conceded by Sean Morrison.
Post update
Attempt blocked. Yan Dhanda (Swansea City) right footed shot from outside the box is blocked. Assisted by Jamal Lowe.
Post update
Attempt blocked. Jamal Lowe (Swansea City) right footed shot from the centre of the box is blocked. Assisted by Ryan Manning with a cross.
Booking
Will Vaulks (Cardiff City) is shown the yellow card.
Post update
Morgan Whittaker (Swansea City) wins a free kick in the defensive half.