Everton moved back into the Premier League's top four with a resilient victory over Fulham.
With the hosts in control during the first half, Leon Osman curled in.
But Fulham improved and drew level via Dimitar Berbatov's penalty after Gareth Barry fouled Alex Kacaniklic.
Everton then had to dig deep and Seamus Coleman tucked in Steven Pienaar's cross before Barry redeemed himself with a header and Kevin Mirallas grabbed an injury-time fourth.
Roberto Martinez's team overtook Merseyside rivals Liverpool in the table and after winning plaudits for their attacking displays this season, this was a victory more allied to perseverance.
Martinez pleased after 'difficult' win
Two late goals made the scoreline slightly flattering, but Everton preserved their unbeaten home record in 2013 and have lost only once in the league this season.
After drawing at league leaders Arsenal and beating Manchester United in their past two matches, Everton's Spanish manager urged caution about facing Fulham, who remain in the bottom three.
However, he will have been pleased with his side's spirit, although he did lose Gerard Deulofeu to a hamstring injury in the second half.
New Fulham boss Rene Meulensteen engineered his side's first win in seven league outings against Aston Villa last Sunday.
Fulham's last victory at Goodison Park came in the FA Cup in 1975
But it was only in the second half where the Cottagers looked winning their first league game at Goodison Park. They posed little threat before the break.
Deulofeu, who returned to the starting line-up, caused havoc for Fulham left-back John Arne Riise in the first period, and with greater composure Everton could easily have added to their tally.
It took time for the hosts to find their momentum but Osman's strike, on his 300th Premier League appearance, was worth the wait as he collected Pienaar's pass on the edge of the box, checked to put Riise on his backside and curled into the bottom corner.
Scoreline flatters Everton - Meulensteen
The diminutive midfielder, in the team in place of the suspended James McCarthy, volleyed wide after one of several efforts from Ross Barkley. Maarten Stekelenburg also made decent saves to deny Romelu Lukaku and Coleman.
It took 35 minutes for Fulham to carve out their first chance, but they re-appeared after the interval with far more urgency and twice could have levelled in the space of two minutes.
First, Tim Howard saved Scott Parker's shot after Phil Jagielka's poor header and then Kacaniklic somehow fired over from eight yards with Howard lying helpless on the floor after denying Steve Sidwell.
Everton brought on Mirallas for Deulofeu and Fulham levelled soon after as Barry fouled Kacaniklic, with Berbatov stroking home from 12 yards.
The visitors were only level for six minutes, as Coleman ghosted into the box to tuck in after Pienaar's cross had been diverted to him by Stekelenburg.
And although Fulham searched for a second equaliser by introducing Darren Bent, Barry's close-range header following a corner and Mirallas's late strike sealed a resounding win.
Fulham boss Rene Meulensteen:
"If you see the game and the second half it was never a 4-1 defeat so it's disappointing. We did really well in second half.
"The spirit and energy is back in the team, this is just a hard defeat to take. We need to brush it off, get to the training ground and prepare for the next game."
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.