Substitute Steve Sidwell rescued a point for Fulham with an 90th-minute equaliser in a game which Everton should have won comfortably.
Tim Howard was at fault as Fulham took an early lead, the Everton keeper pushing Bryan Ruiz's free-kick on to a post before the ball crossed the line.
Marouane Fellaini deservedly levelled after good work by Kevin Mirallas.
Fellaini got the better of Aaron Hughes to make it 2-1 before Sidwell poked home the equaliser from close range.
Despite climbing to fourth in the table after stretching their unbeaten league run to seven games, this was definitely a case of two points dropped for Everton, who dominated from start to finish.
The Cottagers should have been dead and buried before Sidwell struck, Nikica Jelavic responsible for two glaring misses in the first half alone.
Toffees boss David Moyes looked distinctly unimpressed at the final whistle after being forced to settle for a fourth straight draw.
Despite having now conceded in the opening 15 minutes in each of their last six games, his side looked to be coasting to victory.
They had more than 20 shots, hit the woodwork and had another chance cleared off the line.
There was little sign of what was to come when Phil Neville's clip on Dimitar Berbatov allowed Fulham to take the lead, Howard pushing Ruiz's 25-yard free-kick against the post before it rebounded back off him into the net.
Everton's response was impressive. Unfortunately for the Blues, their finishing was not.
Mark Schwarzer did well to deny Fellaini an equaliser while the Australian goalkeeper was also alert to deny Seamus Coleman before half-time.
Then Jelavic wasted two fine chances, the first a header while unmarked just outside the six-yard box before the Croatian striker raced behind the home defence and lifted the ball over Schwarzer and the bar.
Defender Phil Jagielka also went close with an ambitious attempt before Everton's pressure paid off, Fellaini picking his spot from eight yards after Mirallas had raced behind the Fulham defence in the 55th minute.
Everton then had Howard to thank for keeping them on level terms, the United States international producing a terrific one-handed stop to frustrate Berbatov after the Bulgarian had beaten the offside trap.
But Fellaini deservedly put Everton ahead in the 72nd minute after getting the better of Hughes in an aerial challenge before picking his spot with a low shot.
And in a pulsating finish, Everton substitute Steven Naismith had a shot cleared off the line by Chris Baird and Fellaini had a shot deflected on to the post before Schwarzer kept out the Belgian's volley.
Everton thought they had done enough to win, but Sidwell had the final say as he pounced at the back post after Berbatov missed Sascha Riether's low centre from the right, stretching Fulham's unbeaten league run to four games.
Fulham manager Martin Jol:
"Everton dominated us, all we could do was try to be positive.
"But it doesn't mean anything in football if you don't score the goals.
"They are a very good footballing team. They are a settled team and know exactly what to do. Normally we are a good team, but I couldn't see that today.
"The only positive thing I can say is that we never gave up."
Everton manager David Moyes said:
"I'm really frustrated because if I really want to hang on to the boys at the top I need to win these games when they come along.
"I can't believe we only got a draw out of that, it's incredible.
"We've played really well this season but that one we should have won. We were terrific at times but couldn't get the goals."