Patrick Bamford opened the scoring with a deft finish in the first half but Joachim Andersen soon replied for Fulham in a match that had spectators on the edge of their seats from the outset. Raphinha settled proceedings in the second half with a cool finish having been played through on goal by Bamford.
Story of the game
Coming into the match, Fulham manager Scott Parker made two changes to the side that suffered defeat at the hands of league-leaders Manchester City last time out. Antonee Robinson came in for Kenny Tete at full-back with Ola Aina shifting to the right of defence, while Josh Maja replaced Ruben Loftus-Cheek to lead the line for the hosts.
Meanwhile, Marcelo Bielsa made no adjustments to the starting 11 that played out a goalless draw with Chelsea last weekend.
The Cottagers had a chance right from kick-off. Andersen played a long-ball straight out to the flank and Ivan Cavaleiro emerged victorious from his aerial duel with Ezgjan Alioski, giving the forward the chance to strike at goal from a tight angle, but Pascal Struijk put his body on the line to divert the ball behind for a corner.
Before long, it was Leeds' turn to threaten. Bamford was thread through by Diego Llorente and he held off Tosin Adarabioyo, apparently working adequate space to strike, but the defender recovered well and cleared. A frantic few opening exchanges in what was set to be a fascinating match.
The visitors thought they'd taken the lead in the seventh minute. Tyler Roberts received the ball on the left flank, cut infield and supplied a sumptuous cross to Luke Ayling who headed home from the back post — but VAR revealed the supplier had been standing in an offside position when he received the ball, and the goal was chalked off.
Leeds were on it tonight. They harried Fulham relentlessly both with and without the ball and just lacked the cutting edge in the majority of their attacks in the first 30 minutes.
But it was the hosts who fashioned the best opportunity to open the scoring; a number of them in quick succession, in fact. A scramble in the Leeds box saw the midfield trio of Andre-Frank Zambo Anguissa, Mario Lemina and Harrison Reed all try their luck at goal, before Maja's eventual effort trickled through everyone and had to be saved off the line by Illan Meslier.
Fulham missed their gilt-edged chance, and Leeds capitalised almost immediately. Jack Harrison worked space for a cross from the left and duly delivered a tantalising ball to the near post, Bamford meeting it first time to give Alphonse Areola no chance from close range.
That, by the way, was Bamford's 13th goal in 16 league appearances on a Friday. A ludicrous record.
Seven minutes later, though, the hosts levelled the scores in the simplest of manners. Ademola Lookman delivered an inch-perfect corner in from the right which met Andersen in the middle, the Dane getting in front of Ayling to lash home emphatically and instigate raucous celebrations from the home contingent.
And they nearly turned the game right on its head when they next surged up the pitch. Lookman slipped the ball to Anguissa on the edge of the area and the midfielder powered a vicious effort at goal, but Meslier stretched out a strong hand to save his defence's blushes after a shaky few moments from the visitors.
A goal apiece at half-time, but both sides could have scored more, and we were surely in for another thrilling 45 minutes after the break.
At half-time, Parker introduced Aleksandar Mitrovic to take Maja's spot leading the line, clearly feeling there was something to exploit when Leeds were drawn into physical or aerial duels, particularly at set-piece scenarios as demonstrated by Andersen's goal.
After their blip towards the end of the first period, Leeds looked to have woken up. With 55 on the clock, Harrison received the ball on the right and skipped past Aina before sending Anguissa to ground with some silky footwork. He took two more strides before powering a shot at goal which Areola was equal to.
Next, Lemina knocked the ball past Alioski to work his way into the area before sending a low drive across the face of goal. Lookman met it at the back post but scuffed his contact in a real let-off for the visitors.
Energetic didn't do this match justice and, characteristically, Leeds surged straight up the other end to regain their advantage. Raphina was thread through by Bamford and he evaded the challenge of Adarabioyo before shifting the ball onto his weaker left foot and dispatching coolly into the bottom corner.
Fulham had a bit of a mountain to climb now; they'll have been targeting a win from this match, but had not managed to score three goals in a single league match since their last meeting with Leeds in September.
Since being moved to the left side for the second half, goalscorer Raphinha was wreaking absolute havoc for the Fulham defence. He threatened again when he latched onto a nicely weighted through-ball from Roberts and cut onto his right foot sizing up the shot, but Areola got down at his feet well to claw it away.
The hosts were still fighting. When Cavaleiro was freed down the right with 20 minutes to go, he teased Alioski into a challenge before supplying a whipped cross into the area where both Mitrovic and Lookman were lurking. In the end it fell for the latter, who spun on the spot and struck at goal, but Meslier again got across well to save.
This match was, amazingly, getting more and more open by the minute. With just under 10 minutes of regulation time remaining, Roberts worked his way into the box and fed Stuart Dallas making a run to his right, but the shot from the Northern Ireland international whistled just wide of the far post.
The ball then dropped for Alioski from a corner situation and the Macedonian struck it first-time on the volley, drawing a tremendous diving stop from Areola who pushed it behind for a corner.
Fulham's final chance fell right on 90 minutes they again caused the Leeds defence a number of problems from a corner situation. Sruijk headed the ball back towards his own goal, but Kalvin Phillips was on hand to clear it away and secure Leeds' first win in the capital this season.
Takeaway from the match
Fulham undone by moments of quality — but they must do better at home
The goals that sunk the Cottagers tonight were easy on the eye and there probably wasn't much they could've done to prevent them; they certainly weren't quite as error-prone as they were against Manchester City last weekend.
But Parker will feel he and his sides are running out of silver linings, with just eight games of this Premier League campaign remaining. They could've got something from the match tonight and needed to, and that's largely been the story of their fortunes at Craven Cottage this season — they still have the worst home record in the division and will need to amend that pronto if they are to secure another season of top flight football.
Bamford makes England statement
He limped off in the 75th minute, but Bamford led the line superbly well for Leeds tonight, the perfect way to respond to his exclusion from Gareth Southgate's England squad for the upcoming international break.
The 27-year old was in the right place at the right time to prod home Roberts' cross for his goal and was absolutely pivotal to his side's second, setting up Raphinha for the game-winner with a clever turn and pass in one swift motion. That's 14 Premier League goals for the striker now; he must be firmly in Southgate's thoughts.
Fulham: Areola; Aina (Tete 71'), Andersen, Adarabioyo, Robinson; Anguissa, Reed (Loftus-Cheek 62'), Lemina; Cavaleiro, Maja (Mitrovic 46'), Lookman.
Unused subs: Fabri, Odoi, Hector, Ream, Kongolo, Bryan.
Leeds United: Meslier; Ayling, Llorente, Struijk, Alioski; Raphinha, Phillips, Dallas, Harrison; Roberts (Koch 90+1'); Bamford (Klich 75').
Unused subs: Casilla, Berardi, Shackleton, Jenkins, Costa, Poveda, Gelhardt.
Following defeat here, and after the upcoming international break, Fulham travel to Aston Villa.
Meanwhile, Leeds will host Sheffield United in a Yorkshire derby on the same day, 3 April.