Match ends, Fulham 2, Leeds United 1.
Fulham halted their three-match losing streak by ending Leeds United's 11-game unbeaten run to move up to third in the table.
The Championship's top scorer, Aleksandar Mitrovic, netted his 17th league goal of the season from the spot to give the hosts the lead.
Leeds levelled after the break through Patrick Bamford's tap-in on the rebound from substitute Eddie Nketiah's strike.
Josh Onomah smashed in the winner - his first goal of the season - after the ball fell kindly for him from a corner, moving Fulham nine points behind the second-placed visitors.
Leeds had not lost since 5 October but threw away a 3-0 lead to draw with Cardiff in their previous game - a result that ended a seven-match winning run.
They fell behind early in a fiery and relatively ill-tempered first half when Ben White fouled Bobby Decordova-Reid in the area and Mitrovic's spot-kick went in off the post.
After Bamford's 10th goal of the campaign brought Leeds level, Ivan Cavaleiro was denied a fine, long-range goal for the hosts by a brilliant Kiko Casilla save.
But the Spaniard could not keep out Onomah's powerful drive as Fulham claimed a much needed victory in the promotion race.
The result, coupled with leaders West Bromwich Albion's draw with Brentford, saw Leeds drop three points behind the Baggies.
Fulham manager Scott Parker told BBC London:
"I'm most pleased obviously with the result. When you come out of three losses you feel things heating up with everyone including the squad.
"We got a result today against one of the top teams in the league and the way we went about it is what pleased me the most.
"People were questioning things last week at Brentford away. This time, against Leeds, it wasn't about technique or quality, people were going to be judging you for who you are.
"I don't want to hear that we played well, I want to hear that people say our players did everything they could to win a football match and I think we've done that."
Leeds head coach Marcelo Bielsa told BBC Radio Leeds:
"We played one of the more powerful opponents in the league who defended well. They scored after one corner and one penalty and they had just one more chance, while we had seven to eight chances to win the match.
"We defended very well against strong attackers. The only thing I am ashamed about from my team is that after we scored, we conceded possession in our half and we allowed them to come back into the game.
"That was important as this moment was the moment to win the match. There are some things to improve."
- 23BryanBooked at 45mins
- 21ReedBooked at 29minsSubstituted forJohansenat 90'minutes
- 19CavaleiroSubstituted forKnockaertat 90+6'minutes
- 9MitrovicBooked at 89mins
- 14De Cordova-ReidSubstituted forS Sessegnonat 90+2'minutes
- 43S Sessegnon
- 2AylingSubstituted forStevensat 72'minutes
- 6CooperBooked at 24mins
- 17Hélder CostaBooked at 45minsSubstituted forNketiahat 45'minutes
- 43KlichBooked at 17mins
- 19HernándezSubstituted forAlioskiat 3'minutesBooked at 81mins
- Tim Robinson
- Shots on Target
Second Half ends, Fulham 2, Leeds United 1.
Substitution, Fulham. Anthony Knockaert replaces Ivan Cavaleiro.
Corner, Leeds United. Conceded by Aleksandar Mitrovic.
Corner, Leeds United. Conceded by Tom Cairney.
Attempt missed. Ezgjan Alioski (Leeds United) left footed shot from outside the box is high and wide to the right. Assisted by Kalvin Phillips with a cross following a corner.
Corner, Leeds United. Conceded by Alfie Mawson.
Substitution, Fulham. Steven Sessegnon replaces Bobby De Cordova-Reid.
Attempt missed. Kalvin Phillips (Leeds United) left footed shot from outside the box is too high.
Attempt blocked. Mateusz Klich (Leeds United) right footed shot from the centre of the box is blocked. Assisted by Jack Harrison with a cross.
Substitution, Fulham. Stefan Johansen replaces Harrison Reed.
Aleksandar Mitrovic (Fulham) is shown the yellow card.
Offside, Leeds United. Mateusz Klich tries a through ball, but Patrick Bamford is caught offside.
Foul by Kalvin Phillips (Leeds United).
Aleksandar Mitrovic (Fulham) wins a free kick in the defensive half.
Corner, Leeds United. Conceded by Joe Bryan.
Ezgjan Alioski (Leeds United) is shown the yellow card for a bad foul.
Foul by Ezgjan Alioski (Leeds United).
Ivan Cavaleiro (Fulham) wins a free kick on the right wing.
Jack Harrison (Leeds United) wins a free kick in the defensive half.