It was a story of two halves as Everton somehow left the capital with all three points, which puts them seventh in the Premier League.
For the first 45' it was all Fulham and the home side created numerous chances to put the game to bed.
However, Everton responded and started to get a foothold in the game. With 15 minutes remaining, the Blues levelled and won it late on thanks to a Bernd Leno own goal.
This victory has put Everton three points ahead of Fulham, and David Moyes's side continues their impressive away form.
For Fulham, they'll be wondering how they didn't get anything out of the game. This result leaves the Cottagers in 10th place.
For the opening ten minutes, it was the visitors who took control of the game. Jake O'Brien hit the post from a James Garner corner.
Minutes later, Fulham almost took the lead. Following a scramble in Everton's box, Sander Berge's header was cleared off the line by O'Brien.
From then on, the home side took over and dominated large periods of the first half, with Everton struggling to cope.
Marco Silva's side kept applying the pressure and got their reward with a Vitalii Mykolenko own goal.
Ryan Sessegnon's cross was met by Raul Jimenez, who was denied by Jordan Pickford, but the ball deflected off the Ukraine defender to give Fulham the lead.
Fulham almost doubled their lead immediately with Samuel Chukwueze's curling shot was was pushed away by Pickford.
Emile Smith-Rowe was next up to try and double the home side's lead, but the Englishman struck the bar.
Everton managed to survive the onslaught briefly and won a corner following nice footwork from Thierno Barry. Kiernan Dewsbury-Hall fired wide as he found himself free, on the edge of the box.
Raul Jimenez should have made it 2-0. The Mexican managed to get past Mykolenko, but his effort dragged just wide.
Throughout the first half, the Fulham forwards found themselves in glorious goalscoring positions. Harry Wilson had an attempt which went just over the bar.
Just before half-time, Barry had the best chance to level it for Everton. Dewsbury-Hall managed to find himself in space and played a ball that went across Bernd Leno's goal, but the Frenchman was unable to connect with it.
The Blues were fortunate to go into the break a goal down. In the closing stages, Pickford denied Smith-Rowe, and Fulham hit the bar again with Chukwueze striking from range.
Everton responded early in the second half with Dewsbury-Hall finding Michael Keane, but nothing came of it , and Barry headed wide from a corner.
Once again, Jimenez should have doubled Fulham's lead, but Mykolenko managed to clear the ball and deny Fulham their second goal of the afternoon.
James Tarkowski had Everton's best chance of the second half, but headed just over.
Dewsbury-Hall got Everton their leveller with 15 minutes remaining as the midfielder struck from close range.
Mykolenko got past Joachim Anderson, and his cross found Dewsbury-Hall. Leno got a hand on the 27-year-old's strike but was unable to keep it out.
Everton gathered momentum and minutes later won a corner. The following corner was crossed by Dewsbury-Hall, and Leno failed to get a strong enough connection on the ball and punched it into his net to give Everton the lead.
In the closing stages, Fulham had all the ball, and Berge had an attempt from distance which dragged wide of the post, and wasn't troubling Pickford.