Two goals in the dying minutes from Louis Saha and Jack Rodwell handed Everton their first win in four games.
The scores were level after brilliantly taken goals from Everton's Royston Drenthe in the second minute and Fulham substitute Bryan Ruiz after 67 minutes.
The game seemed headed for a draw before Bobby Zamora missed an open goal for Fulham and Saha capitalised to put Everton in front in the 90th minute.
Rodwell finished it off with a strike from the edge of the box in added time.
It was an amazing finale to a game that had started brightly but fizzled out.
But it did produce four goals of the highest quality - and what must be a contender for miss of the season.
Moyes pleased with Everton recovery
The game was barely two minutes old when Everton opened the scoring with a stunner.
In their first attack, Rodwell laid the ball back and Dutchman Drenthe, on loan from Real Madrid, curled the ball past Mark Schwarzer with his left foot.
Everton were dominating the early stages with Leighton Baines's left foot causing problems for the Fulham back four and setting up headers from Marouane Fellaini and Rodwell.
Drenthe tried his luck again from long range but this time Schwarzer saved despite a deflection.
Fulham's first decent chance fell to former Liverpool full-back John Arne Riise but his dipping shot from the left edge of the penalty area flew over the bar.
Danny Murphy, back in the side after injury, followed suit letting rip with his right foot. The ball hit the post, hit goalkeeper Tim Howard on the head and flew across the goal to go out for a corner.
Martin Jol's men were getting back into the game and Howard had to be at his best to stop Brede Hangeland finding the equaliser with a close-range header.
DID YOU KNOW?
Fulham's defeat against Everton was their 21st game in all competitions in a season that started with Europa League qualifying rounds in June.
The second-half started slowly with Everton allowing Fulham to come at them.
The outcome was a midfield battle with chances - plentiful in the first-half - drying up.
But the game changed with the introduction of Ruiz for home skipper Danny Murphy after 67 minutes.
The former FC Twente striker, signed in the last hour of the summer transfer window, met a Dempsey pass into the area and executed the deftest of chips with his left foot to give Howard no chance.
There were still chances for both sides, but by far the best of them fell to England striker Zamora in the 89th minute.
He controlled the ball and cleverly walked it past Howard but then, with the goal at his mercy, smashed it over the bar when he could have just tapped it in.
Had he done so, victory seemed certain for Fulham but instead the ball went straight down the other end where Saha controlled it expertly on his chest and then stroked it past Schwarzer.
The Fulham fans could not believe it but there was more to come when a ball into the box was headed out as far as Rodwell, who kept his nerve to steer his shot into the back of the net.
Martin Jol frustrated by 'unbelievable' ending
Fulham manager Martin Jol said:
"It is not about possession or playing better now, it is about chances.
"We really thought we could have a result from today but we didn't. Bobby had the winning goal on his foot in the 89th minute and then we conceded a goal in the 90 minute.
"There's nothing you can say to Bobby. He's sick and we're all sick.They play together and they lost together. We should have won this game and we didn't. Today should have been different."
Everton manager David Moyes said:
"If you look back to previous seasons, we've tended to get better as the season's gone on so I'm hoping that will be the case again.
"What we needed to do from this period was find a win from somewhere. We've had a really difficult last three games, with Man City, Liverpool and Chelsea, and we have got Manchester United next week.
"Arguably three of those will realistically be up there at the top of the league and we had Liverpool in there as well."
The assist for the goal came from Royston Drenthe.
90:00 +2:13 Goal scored
Goal! - Jack Rodwell - Fulham 1 - 3 Everton Jack Rodwell grabs a goal from the edge of the penalty box to the bottom right corner of the goal. Fulham 1-3 Everton.
Free kick crossed by Royston Drenthe, clearance made by John Arne Riise. Royston Drenthe provided the assist for the goal.
90:00 +1:47 Booking
Booking The referee cautions Chris Baird for unsporting behaviour.
Chris Baird gives away a free kick for an unfair challenge on Louis Saha.
89:55 Goal scored
Goal! - Louis Saha - Fulham 1 - 2 Everton Louis Saha scores a goal from close in to the bottom right corner of the goal. Fulham 1-2 Everton.
Substitution Aaron Hughes is brought on as a substitute for Zdenek Grygera.
Close range shot by Bobby Zamora clears the bar.
Centre by Leighton Baines, clearance made by Brede Hangeland.
Andrew Johnson takes a shot. Blocked by Phil Jagielka. A cross is delivered by John Arne Riise, The ball is swung over by Bobby Zamora, Bryan Ruiz takes a shot. Save by Tim Howard. Clearance by Leighton Baines.
Centre by Tony Hibbert.
Marouane Fellaini takes a shot. Mark Schwarzer makes a save.
John Arne Riise produces a cross, Leighton Baines makes a clearance.
Free kick awarded for a foul by Royston Drenthe on John Arne Riise. Steve Sidwell takes the indirect free kick.
Marouane Fellaini concedes a free kick for a foul on Bobby Zamora. Free kick crossed by John Arne Riise, Sylvain Distin makes a clearance.
The ball is sent over by Bobby Zamora, save by Tim Howard.
Louis Saha takes a shot. Save made by Mark Schwarzer.
Foul by Louis Saha on Steve Sidwell, free kick awarded. Chris Baird takes the free kick. Andrew Johnson gives away a free kick for an unfair challenge on Royston Drenthe. Free kick taken by Sylvain Distin.
Substitution Seamus Coleman comes on in place of Phil Neville.
Substitution Leon Osman leaves the field to be replaced by Tim Cahill.
Leighton Baines fires a strike on goal direct from the free kick.
Booking The referee shows Steve Sidwell a yellow card for unsporting behaviour.
Steve Sidwell gives away a free kick for an unfair challenge on Royston Drenthe. Indirect free kick taken by Phil Jagielka. Steve Sidwell challenges Royston Drenthe unfairly and gives away a free kick.
The ball is crossed by Leon Osman, save made by Mark Schwarzer.
Clint Dempsey provided the assist for the goal.
66:58 Goal scored
Goal! - Bryan Ruiz - Fulham 1 - 1 Everton A goal is scored by Bryan Ruiz from the edge of the penalty area to the top right corner of the goal. Fulham 1-1 Everton.
The ball is delivered by Zdenek Grygera, clearance by Tony Hibbert. John Arne Riise takes a outswinging corner from the left by-line played to the near post.
Substitution Danny Murphy leaves the field to be replaced by Bryan Ruiz.
Centre by Leon Osman, save made by Mark Schwarzer.
Louis Saha is caught offside. Indirect free kick taken by Chris Baird.
Jack Rodwell has an effort at goal from outside the penalty box which goes wide right of the target.
Centre by Leighton Baines, Chris Baird manages to make a clearance.
Centre by Andrew Johnson, Phil Jagielka manages to make a clearance.
Tim Howard restarts play with the free kick.
Booking The referee books Andrew Johnson for unsporting behaviour.
Unfair challenge on Phil Jagielka by Andrew Johnson results in a free kick.
Substitution Apostolos Vellios leaves the field to be replaced by Louis Saha.
The ball is delivered by Danny Murphy, Header from close in by Brede Hangeland misses to the left of the goal.
Booking Booking for Sylvain Distin for unsporting behaviour.
Sylvain Distin concedes a free kick for a foul on Andrew Johnson.
Royston Drenthe fouled by John Arne Riise, the ref awards a free kick. Tim Howard takes the free kick.
Centre by John Arne Riise, clearance made by Phil Jagielka.
The referee blows his whistle to start the second half.
45:00 +1:01 Half time
Half Time The ref blows to end the first period.
Zdenek Grygera sends in a cross, Tim Howard makes a save.
A cross is delivered by Royston Drenthe, Mark Schwarzer makes a save.
Clint Dempsey has an effort at goal from just outside the area which goes wide of the left-hand post.
The ball is crossed by John Arne Riise, clearance by Tony Hibbert.
Short corner taken by Danny Murphy from the right by-line.
Free kick awarded for an unfair challenge on Tim Howard by Clint Dempsey. Indirect free kick taken by Tim Howard.
The ball is swung over by Danny Murphy, clearance made by Phil Neville.
Chris Baird challenges Leon Osman unfairly and gives away a free kick. Free kick taken by Leighton Baines.
The ball is swung over by John Arne Riise, clearance by Tim Howard.
Tony Hibbert delivers the ball, clearance by Brede Hangeland.
Unfair challenge on Moussa Dembele by Phil Neville results in a free kick. Chris Baird produces a shot on goal direct from the free kick, Phil Neville gets a block in.
Steve Sidwell crosses the ball, save by Tim Howard.
Brede Hangeland takes a shot. Save by Tim Howard. Outswinging corner taken by Danny Murphy from the right by-line.
Marouane Fellaini crosses the ball, save made by Mark Schwarzer.
Clint Dempsey takes a shot. Tim Howard makes a brilliant save.
Danny Murphy has an effort at goal from outside the penalty area hitting the post. Outswinging corner taken right-footed by Danny Murphy, Phil Jagielka makes a clearance.
Clint Dempsey takes a shot. Blocked by Leighton Baines.
The ball is delivered by Tony Hibbert, Apostolos Vellios produces a header from deep inside the six-yard box that clears the crossbar.
Free kick awarded for an unfair challenge on Clint Dempsey by Phil Jagielka. Danny Murphy takes the free kick.
Shot from just outside the area by John Arne Riise goes over the bar.
The ball is sent over by John Arne Riise, clearance made by Sylvain Distin.
Royston Drenthe takes a shot. Save by Mark Schwarzer.
Leon Osman fouled by Moussa Dembele, the ref awards a free kick. Free kick taken by Leighton Baines.
Shot from outside the box by Steve Sidwell misses to the left of the goal.
John Arne Riise takes a shot. Tony Hibbert gets a block in. Outswinging corner taken left-footed by John Arne Riise from the left by-line, clearance by Phil Jagielka.
John Arne Riise produces a cross, Leighton Baines manages to make a clearance.
Marouane Fellaini concedes a free kick for a foul on Chris Baird. Chris Baird takes the free kick.
The ball is swung over by Leighton Baines, Jack Rodwell has a headed effort at goal from close range which goes wide left of the target.
Free kick awarded for an unfair challenge on Royston Drenthe by Danny Murphy. Leighton Baines takes the direct free kick.
The ball is sent over by Zdenek Grygera, Clint Dempsey produces a overhead kick right-footed shot from deep inside the penalty area which goes wide of the left-hand post.
Foul by John Arne Riise on Royston Drenthe, free kick awarded. Centre by Leighton Baines, Sylvain Distin takes a shot. Brede Hangeland gets a block in. Inswinging corner taken by Leon Osman from the left by-line played to the near post, Chris Baird makes a clearance.
Leon Osman gives away a free kick for an unfair challenge on Zdenek Grygera. Chris Baird takes the indirect free kick.
The ball is delivered by Phil Neville, Zdenek Grygera manages to make a clearance.
Foul by John Arne Riise on Royston Drenthe, free kick awarded. Indirect free kick taken by Tony Hibbert.
Assist on the goal came from Jack Rodwell.
2:14 Goal scored
Goal! - Royston Drenthe - Fulham 0 - 1 Everton Royston Drenthe fires in a goal from long distance to the bottom left corner of the goal. Fulham 0-1 Everton.
Leighton Baines sends in a cross, Brede Hangeland makes a clearance.
This page is best viewed in an up-to-date web browser with style sheets (CSS) enabled. While you will be able to view the content of this page in your current browser, you will not be able to get the full visual experience. Please consider upgrading your browser software or enabling style sheets (CSS) if you are able to do so.