Match ends, Cardiff City 4, Fulham 2.
Fulham boss Slavisa Jokanovic said his side have "so many defensive problems to fix" after they slipped into the Premier League relegation zone with defeat at Cardiff.
Andre Schurrle's spectacular 30-yard strike put the visitors ahead against the run of play, but within 10 minutes they trailed against a resurgent Bluebirds side inspired by a fervent home crowd.
Josh Murphy equalised with a precise low finish, then Bobby Reid seized on frenetic Fulham defending to slot in his first goal for the club - only for Ryan Sessegnon to make it 2-2 before the break.
Fulham seemed to grow in confidence from that point, but Cardiff responded again, with Callum Paterson shooting on the turn to squeeze the ball into the bottom corner to make it 3-2.
Then, as the visitors went in search of a late equaliser, a slip from Tim Ream allowed Victor Camarasa to square the ball to Cardiff substitute Kadeem Harris, whose close-range finish prompted delirious celebrations among the home fans.
- Cardiff's season starts here - Warnock
- What happened in the Premier League on Saturday?
- The best Premier League stats
Cardiff's first league win of the season lifted them off the bottom of the table and out of the relegation zone, while Fulham have now conceded 12 goals in their past three games.
"We must find a solution to stop this kind of situation, fix our mistakes and concede fewer goals," said Jokanovic.
"We are definitely not doing enough good work in our box. Even when we defend with four or five centre-backs, we didn't find the solution."
Cardiff finally taste victory
Even manager Neil Warnock said on Friday he would not bet on Cardiff surviving this season - although, having then pointed out the odds were also against them winning promotion from the Championship last term, one got the impression the remark was tongue in cheek.
It was not without sincerity, though. After all, Cardiff had not won at home in the Premier League since beating Fulham here in March 2014.
There was hope for the hosts in the fact their opponents were the only team in the division yet to keep a clean sheet this season.
It was clear to see why that was the case. Either side of Schurrle's spectacular opener, Cardiff created chances with a frequency they had not enjoyed since they were in the Championship.
Murphy was their most potent threat, tormenting Calum Chambers to such an extent that the Fulham right-back was substituted at half-time.
Fittingly, it was Murphy who scored the equaliser, cushioning a brilliant long ball from Sol Bamba and advancing into the penalty area before firing into the bottom corner.
Cardiff's second owed more to luck, with Fulham unable to clear a free-kick and Aron Gunnarsson's block falling kindly to Reid, who threaded the ball between Marcus Bettinelli's legs.
Worryingly for the home side, however, they could not make this period of dominance count and still found themselves pegged back by Sessegnon's equaliser.
The sense of frustration was palpable, and so was the relief when Paterson swivelled smartly in the penalty area to guide his low, slow shot into the net.
If the celebrations after that goal were loud, the noise that greeted Harris' late fourth was deafening, as Cardiff's supporters dared to dream their team could yet again confound the odds this season.
Fulham's leaky defence proves costly again
Going into this game, Slavisa Jokanovic's side were without a victory since August, and their biggest concerns were defensive - having conceded eight goals in their previous two matches. Those worries worsened here.
Fulham were rattled by their opponents' purposeful start, and were disorganised and panicky under pressure.
But once Sessegnon drew them level - running on to Aleksandar Mitrovic's neat flick to finish with similar style - the visitors settled.
They kept possession and played with more composure in the second half, keeping Cardiff's direct attacks at bay for long periods.
Once again, however, their defensive frailties were exposed as Paterson restored the hosts' lead.
Fulham had chances to snatch a point, the best of which fell to former Swansea City centre-back Alfie Mawson, whose late header was superbly saved by Neil Etheridge. But a draw would have been a lucky escape for Fulham.
In the 87th minute there was a moment that crystallised their collective defensive effort, when Ream slipped near the halfway line, allowing Camarasa to run clear and set up Harris for Cardiff's fourth goal.
Man of the match - Josh Murphy (Cardiff)
'I can enjoy my weekend now' - what they said
Cardiff manager Neil Warnock: "It's just a great feeling for everyone at the club. We have been playing well the last few weeks and not had the rub of the green. We persevered and they didn't let the disappointments get them down.
"We are made of stern stuff, the fans are unbelievable as well. In the second half we rolled our sleeves up and said, 'This is our season'.
"We wanted to have a go at them and we did. Everyone worked to the plan and on another day we could have got more, but I can't be too greedy. I can enjoy my weekend now."
Fulham manager Slavisa Jokanovic: "We are frustrated after this kind of defeat. We weren't strong enough in our box. They scored easy goals, even when we defend in numbers they finish the action and score.
"We have so many problems in the defensive side but we have to find a solution. It's still early on in the competition. We can find improvement, we must be brave and keep going to fix our mistakes."
Cardiff are back in the goals - the stats
- Cardiff have scored four or more goals in a top-flight game for the first time since September 1961 vs Chelsea (5-2).
- Fulham's Ryan Sessegnon is the first player born in or after the year 2000 to score a Premier League goal. Sessegnon is also Fulham's youngest ever goalscorer in the Premier League (18 years 154 days).
- Cardiff have won their first Premier League game since April 2014 (vs Southampton), ending a run of 12 matches without a victory.
- Fulham have failed to keep a clean sheet in their last 23 Premier League away games - the longest such run since QPR between October 2011 and November 2012 (also 23 games).
- Cardiff's Josh Murphy scored in consecutive home league appearances for the first time in his career.
- Fulham's Andre Schurrle has scored 73% of his Premier League goals in away games (11 of 15).
Cardiff face a daunting trip to Anfield to face Liverpool next Saturday, 27 October (15:00 BST), while Fulham take on Bournemouth at Craven Cottage on the same day.
- 5Ecuele Manga
- 4MorrisonBooked at 68mins
- 22BambaBooked at 78mins
- 17GunnarssonBooked at 33minsSubstituted forRichardsat 77'minutes
- 7ArterSubstituted forDamourat 86'minutes
- 11MurphySubstituted forK Harrisat 82'minutes
- 23K Harris
- 5ChambersBooked at 19minsSubstituted forMawsonat 45'minutes
- 20Le Marchand
- 8JohansenBooked at 45minsSubstituted forViettoat 82'minutes
- 6McDonaldBooked at 36mins
- 24SeriSubstituted forAyitéat 58'minutes
- 3R Sessegnon
- 29Zambo Anguissa
- Kevin Friend
- Shots on Target
Second Half ends, Cardiff City 4, Fulham 2.
Foul by Aleksandar Mitrovic (Fulham).
Sean Morrison (Cardiff City) wins a free kick in the defensive half.
Maxime Le Marchand (Fulham) wins a free kick in the defensive half.
Foul by Callum Paterson (Cardiff City).
Goal! Cardiff City 4, Fulham 2. Kadeem Harris (Cardiff City) right footed shot from the left side of the six yard box to the high centre of the goal. Assisted by Víctor Camarasa with a cross.
Attempt blocked. Loïc Damour (Cardiff City) right footed shot from outside the box is blocked. Assisted by Víctor Camarasa.
Attempt blocked. Víctor Camarasa (Cardiff City) left footed shot from the right side of the box is blocked. Assisted by Callum Paterson.
Denis Odoi (Fulham) wins a free kick in the defensive half.
Foul by Callum Paterson (Cardiff City).
Substitution, Cardiff City. Loïc Damour replaces Harry Arter.
Attempt saved. Alfie Mawson (Fulham) header from the centre of the box is saved in the bottom right corner. Assisted by Ryan Sessegnon with a cross.
Corner, Fulham. Conceded by Sol Bamba.
Attempt blocked. André Schürrle (Fulham) right footed shot from outside the box is blocked. Assisted by Kevin McDonald.
Hand ball by Kadeem Harris (Cardiff City).
Substitution, Fulham. Luciano Vietto replaces Stefan Johansen.
Substitution, Cardiff City. Kadeem Harris replaces Josh Murphy.
Attempt blocked. Callum Paterson (Cardiff City) left footed shot from the centre of the box is blocked. Assisted by Bobby Reid with a headed pass.
Sol Bamba (Cardiff City) is shown the yellow card.