Match ends, Cardiff City 2, Fulham 2.
Cardiff City 2-2 Fulham
Fulham edged nearer to the Championship play-off places with a thrilling draw at Cardiff City.
Stefan Johansen struck on the break to put the visitors ahead, before Kenneth Zohore equalised in a breathless first half.
Zohore's powerful half-volley put Cardiff in front, but Neeskens Kebano levelled with a deflected effort.
Fulham stay seventh in the table, now five points adrift of the top six, Cardiff remain 12th.
A share of the points was fitting for two sides whose attacking endeavour made for a compelling spectacle, on the day Bluebirds manager Neil Warnock signed a new contract.
The end-to-end entertainment was in striking contrast to January's sparsely-attended FA Cup tie between the same teams, in which Fulham outclassed a much-changed Cardiff side.
On this occasion, they encountered more resistance from the Bluebirds' first string, who peppered the visiting goal in a high-octane start to the game.
Despite initially not enjoying as much possession as they did last month, Fulham's pace made them a threat on the counter-attack - as they proved for the opening goal.
After a Cardiff free-kick was cleared, Tom Cairney fed Johansen, who sprinted clear and finished neatly inside the hosts' penalty area.
Warnock's side were not behind for long, with Zohore seizing on hesitant defending to stride forward and stroke the ball beyond David Button into the bottom corner.
Chances came at both ends at breakneck speed, and Cardiff maintained that intensity at the beginning of the second half.
Wingers Kadeem Harris and Junior Hoilett were a menace to the Fulham defence with their direct, quick running - but it was the impressive Zohore who made the most telling contributions.
His emphatic left-footed volley - his fourth goal in two games - looked like it would set the Bluebirds on their way to a fourth straight win.
But Slavisa Jokanovic's men salvaged a point as substitute Kebano's deflected shot dribbled apologetically into the net.
Cardiff City manager Neil Warnock said: "Very good for the neutral. We had an opportunity to win the game - if we'd have been four up at half-time I don't think anyone could have complained.
"But they're a good side, we knew they'd have opportunities. To score from our corner is like Sunday League, so to do it twice in a season is more than enough.
"It was a kick in the teeth but we came back strongly again. We didn't sulk and got the equaliser and, once we went in front, I thought we'd score more.
"But give them credit. They came back and they're a good side. Both teams could feel disappointed they didn't win it."
Fulham manager Slavisa Jokanovic said: "I believe the result is fair. We tried to use our weapons, Cardiff used a different style and created many chances.
"Cardiff are the best team in the Championship in 2017 so we didn't expect it to be easy.
"We created enough chances but we were not clinical. I'm disappointed but I have to accept the result as a fair result."
- 11NooneSubstituted forJohnat 86'minutes
- 17GunnarssonBooked at 41mins
- 24K Harris
- 26ZohoreBooked at 57mins
- 31M Harris
- 20PiazonBooked at 21minsSubstituted forKebanoat 25'minutes
- 11AyitéSubstituted forCyriacat 65'minutes
- 30R Sessegnon
- Scott Duncan
- Shots on Target
Second Half ends, Cardiff City 2, Fulham 2.
Attempt missed. Stefan Johansen (Fulham) left footed shot from the left side of the box is close, but misses the top left corner. Assisted by Sone Aluko.
Declan John (Cardiff City) hits the left post with a left footed shot from the centre of the box. Assisted by Kenneth Zohore.
Attempt missed. Scott Malone (Fulham) left footed shot from outside the box is high and wide to the left. Assisted by Tom Cairney.
Foul by Tomas Kalas (Fulham).
Kenneth Zohore (Cardiff City) wins a free kick on the left wing.
Substitution, Cardiff City. Declan John replaces Craig Noone.
Tom Cairney (Fulham) wins a free kick in the attacking half.
Foul by Aron Gunnarsson (Cardiff City).
Corner, Fulham. Conceded by Allan McGregor.
Attempt saved. Sone Aluko (Fulham) left footed shot from outside the box is saved in the top centre of the goal. Assisted by Cyriac.
Corner, Fulham. Conceded by Matthew Connolly.
Tomas Kalas (Fulham) wins a free kick in the defensive half.
Foul by Junior Hoilett (Cardiff City).
Attempt missed. Sol Bamba (Cardiff City) header from the centre of the box misses to the left. Assisted by Craig Noone with a cross following a corner.
Corner, Cardiff City. Conceded by Tomas Kalas.
Goal! Cardiff City 2, Fulham 2. Neeskens Kebano (Fulham) right footed shot from the centre of the box to the bottom left corner. Assisted by Tom Cairney.
Attempt blocked. Tom Cairney (Fulham) left footed shot from outside the box is blocked. Assisted by Stefan Johansen.
Attempt missed. Kadeem Harris (Cardiff City) right footed shot from outside the box misses to the right.
Substitution, Fulham. Cyriac replaces Floyd Ayité because of an injury.
Delay over. They are ready to continue.
Delay in match Floyd Ayité (Fulham) because of an injury.
Floyd Ayité (Fulham) wins a free kick in the attacking half.
Foul by Joe Ralls (Cardiff City).
Offside, Cardiff City. Junior Hoilett tries a through ball, but Kadeem Harris is caught offside.
Attempt blocked. Aron Gunnarsson (Cardiff City) right footed shot from outside the box is blocked.
Attempt blocked. Craig Noone (Cardiff City) left footed shot from outside the box is blocked.
Corner, Fulham. Conceded by Sean Morrison.
Kenneth Zohore (Cardiff City) is shown the yellow card for excessive celebration.
Goal! Cardiff City 2, Fulham 1. Kenneth Zohore (Cardiff City) left footed shot from the right side of the box to the high centre of the goal.
Attempt missed. Craig Noone (Cardiff City) left footed shot from the centre of the box is too high. Assisted by Kenneth Zohore.
Foul by Ryan Fredericks (Fulham).
Kadeem Harris (Cardiff City) wins a free kick on the left wing.
Attempt missed. Floyd Ayité (Fulham) right footed shot from the centre of the box is too high. Assisted by Neeskens Kebano.
Offside, Cardiff City. Craig Noone tries a through ball, but Junior Hoilett is caught offside.
Second Half begins Cardiff City 1, Fulham 1.
First Half ends, Cardiff City 1, Fulham 1.
Kevin McDonald (Fulham) wins a free kick in the defensive half.
Foul by Kenneth Zohore (Cardiff City).