Match ends, Fulham 2, Cardiff City 0.
Fulham kept their faint hopes of automatic promotion alive with a 2-0 win that dents Cardiff's play-off bid.
Aleksandar Mitrovic marked his return from suspension with a first-half penalty before Josh Onomah crashed home a second for the hosts after the break.
The Bluebirds have lost back-to-back games and will be leapfrogged by bitter rivals Swansea City if they can beat league leaders Leeds United on Sunday.
Fulham's fourth successive win sees them move four points behind West Brom.
The Cottagers visit the second-placed Baggies on Tuesday, the same night that Cardiff will host another play-off contender, Derby County, by which time Swansea may have knocked them out of the top six.
Both sides made changes in attack for a contest between contrasting styles.
Fulham were able to recall Anthony Knockaert and Mitrovic, with Cardiff having Callum Paterson back, but the attacking players had few moments to shine in a dour opening 30 minutes.
The Bluebirds survived two slight scares through Harrison Reed, who tested goalkeeper Alex Smithies with a mishit cross and a tame shot, but otherwise were largely comfortable in an opening half-hour where they penned back the hosts.
The deadlock was broken on 35 minutes when referee Gavin Ward pointed to the spot after adjudging that Dion Sanderson pulled down Mitrovic, who dispatched the penalty emphatically into the roof of the net.
Mitrovic's 24th league goal of the season sparked the contest into life, with Cardiff almost making a perfect response when Joe Ralls' left-footed volley crashed back off the crossbar, before Ralls then headed over after a well executed long-throw routine.
However, Fulham might have taken more than a one-goal advantage into the break as former Cardiff forward Bobby Decordova-Reid twice came close to extending their lead.
First his curling right-foot effort from outside the area was brilliantly turned onto the crossbar at full stretch by Smithies, before a moment to forget when he glanced his header wide from close range after Knockaert's perfect centre.
Bluebirds boss Neil Harris adjusted his shape with a positive move at half-time as he introduced Lee Tomlin at the expense of Sanderson, who endured a tough first half, but his side still struggled to create a clear opening.
The hosts were given a reprieve on 58 minutes when Michael Hector and Paterson clashed off the ball with the Fulham player appearing to strike Paterson in the face, but the officials deemed it only a yellow-card offence.
However, Cardiff did get their own bit of fortune when the referee waved away furious home penalty appeals despite Curtis Nelson clearly handling Joe Bryan's cross.
Fulham's anger at the failure to award a second penalty soon subsided when former Tottenham midfielder Onomah capped a lovely move with a fine touch and firm finish into the bottom corner of the net.
Cyrus Christie headed over from close range as the hosts threatened to run away with things in a contest they might have won by a greater margin, with subs Neeskens Kebano and Ivan Cavaleiro both spurning injury-time chances.
Fulham manager Scott Parker:
"The win is key at this time in the season, a team like Cardiff put you under extreme pressure.
"We limited Cardiff to a lot of long balls and second balls and dealt with that really well.
"We got the job done today, but we probably could have had one or two more goals.
"Overall I am very, very pleased. We need to keep going now, but momentum is with us."
Cardiff City manager Neil Harris told BBC Sport Wales:
"The difference tonight is that they were better than us in both penalty areas. It was sixth v fourth, so I knew it would be a tight game.
"The penalty, was it a penalty, was it not? I think it is soft at the end of the day, but he's a clever striker, the best in the business at this level. I think the referee was naive there.
"We got into some good areas, but didn't win any second balls.... that is the frustration.
"I will never be happy with a defeat, but the performance was strong. The performances have been strong since March. We have got to earn the right to stay in the top six."
- 22ChristieBooked at 77mins
- 3HectorBooked at 58mins
- 18ArterSubstituted forJohansenat 60'minutes
- 21ReedSubstituted forS Sessegnonat 84'minutes
- 24KnockaertBooked at 39minsSubstituted forCavaleiroat 78'minutes
- 25OnomahSubstituted forMcDonaldat 84'minutes
- 14De Cordova-ReidSubstituted forKebanoat 78'minutes
- 20Le Marchand
- 43S Sessegnon
- 2SandersonSubstituted forTomlinat 45'minutes
- 19Mendez-LaingSubstituted forMurphyat 87'minutes
- 8RallsBooked at 81mins
- 33HoilettSubstituted forWardat 73'minutes
- 13PatersonSubstituted forGlatzelat 67'minutes
- 24B Smith
- Gavin Ward
- Shots on Target
Second Half ends, Fulham 2, Cardiff City 0.
Attempt saved. Aleksandar Mitrovic (Fulham) header from the centre of the box is saved in the bottom left corner. Assisted by Stefan Johansen with a cross.
Corner, Fulham. Conceded by Alex Smithies.
Attempt saved. Ivan Cavaleiro (Fulham) right footed shot from the right side of the box is saved in the bottom right corner. Assisted by Neeskens Kebano.
Foul by Cyrus Christie (Fulham).
Josh Murphy (Cardiff City) wins a free kick in the defensive half.
Attempt saved. Neeskens Kebano (Fulham) header from the centre of the box is saved in the centre of the goal. Assisted by Ivan Cavaleiro with a cross.
Foul by Michael Hector (Fulham).
Robert Glatzel (Cardiff City) wins a free kick in the defensive half.
Tim Ream (Fulham) wins a free kick in the defensive half.
Foul by Danny Ward (Cardiff City).
Foul by Michael Hector (Fulham).
Josh Murphy (Cardiff City) wins a free kick on the left wing.
Marek Rodák (Fulham) wins a free kick in the defensive half.
Foul by Robert Glatzel (Cardiff City).
Attempt blocked. Danny Ward (Cardiff City) right footed shot from the centre of the box is blocked.
Attempt blocked. Robert Glatzel (Cardiff City) right footed shot from the centre of the box is blocked. Assisted by Sean Morrison with a headed pass.
Stefan Johansen (Fulham) wins a free kick in the defensive half.
Foul by Josh Murphy (Cardiff City).