Substitute Duncan Ferguson's second-half header kept Everton third in the Premiership and sank Fulham.
Ferguson scored with a stooping header after 65 minutes when Mark Crossley palmed out Kevin Kilbane's effort.
Crossley was Fulham's hero as they held out in the face of Everton pressure, saving well from Leon Osman, Kevin Kilbane and the tireless Marcus Bent.
Former Everton striker Tomasz Radzinski had Fulham's best chance, but he was brilliantly denied by Nigel Martyn.
It maintained Everton's outstanding season and kept David Moyes' side in touch with the Premiership pace-setters Chelsea and Arsenal.
Radzinski's every touch was jeered after his acrimonious summer departure from Goodison Park - but he twice came close to scoring against his old club.
Everton enjoyed most of the possession in a cagey first half, with Cahill almost breaking the deadlock after 20 minutes, when a trademark header from Osman's cross drifted narrowly over the top.
Radzinski almost silenced the taunts when he met a cross from another former Evertonian, Mark Pembridge, at the far post, but Martyn produced a brilliant reaction save.
Osman had Everton's best opportunity four minutes before half-time, but his shot from 10 yards was turned over the top by Crossley.
Everton came within inches of going ahead seconds after the break when Kilbane's header from Thomas Gravesen's free-kick drifted agonisingly wide.
Moyes' men turned up the heat after the break, with Crossley saving well from Cahill's header and turning Bent's 20-yard drive over the top.
Everton sent on Ferguson on the hour - and seven minutes later the substitute was the hero.
Crossley turned away Kilbane's effort from Gravesen's corner, but Ferguson reacted first to score with a stooping header.
Fulham almost got back into game after 76 minutes, only for Andy Cole to narrowly fail to take advantage of a mix-up between Martyn and David Weir.
And as the seconds ticked away, Radzinski was only inches away from snatching an equaliser.
Everton: Martyn, Hibbert, Stubbs, Weir, Pistone,
Osman (Ferguson 62), Gravesen (McFadden 88), Carsley, Cahill,
Kilbane, Bent (Watson 83).
Subs Not Used: Wright, Yobo.
Goals: Ferguson 67.
Fulham: Crossley, Volz, Knight, Rehman, Bocanegra, Radzinski,
Diop (McBride 81), Malbranque, Pembridge,
Boa Morte (Legwinski 54), Cole.
Subs Not Used: Van der Sar, Hammond, Pearce.
Ref: G Poll (Hertfordshire).