Radhi Jaidi's late own-goal decided a controversial thriller.
Jaidi diverted Leon Osman's shot into his own net as Everton twice came from behind to seal a dramatic win.
Kevin Davies' fired Bolton in front early on but Duncan Ferguson's powerful header gave Everton an equaliser on the stroke of half-time.
Davies restored Bolton's lead with a header but Thomas Gravesen's twice-taken free-kick put Everton level before Jaidi decided a stormy clash.
The game ended in controversial fashion, with players surrounding referee Howard Webb as the exchanges threatened to get out of hand.
But Bolton paid the price for conceding too many free-kicks and can have few complaints.
Everton started with Ferguson up front, with the intention of using his height to counter Bolton's aerial strength.
It was a ploy that failed defensively as Bolton took the lead, courtesy of a trademark set-piece after 15 minutes.
Stelios Giannakopoulos' corner caused mass confusion in Everton's six-yard area, and when goalkeeper Martyn could only half-clear, Davies pounced from close range.
The opening period then descended into a niggly mess of stoppages and disjointed play.
Everton almost equalised after 32 minutes when Cahill's header from Marcus Bent's cross flashed inches wide.
Just as Bolton looked set to reach the interval with a lead, Ferguson made his presence felt to equalise.
The giant Scot met Pistone's cross with a powerful header but Bolton goalkeeper Jussi Jaaskelainen got a hand to the ball and should have kept it out.
Bolton refused to lie down and almost regained the lead after 54 minutes when Davies headed Bruno N'Gotty's cross against the bar.
Okocha should have scored with the rebound - but Bolton were ahead four minutes later.
Nicky Hunt's long cross found Davies at the far post and he sent a looping header over Martyn.
Everton levelled in controversial circumstances with 15 minutes left, courtesy of a Gravesen free-kick.
Referee Howard Webb ordered Gravesen's first kick to be retaken and booked Okocha for failing to retreat 10 yards.
And Gravesen increased Bolton's agony by lashing an unstoppable free-kick past Jaaskelainen.
Bolton boss Allardyce was furious, remonstrating with the officials, but it was all in vain.
Everton went ahead with five minutes left, thanks to a bizarre own goal from Jaidi.
Bolton failed to clear a corner and when Osman fired in a shot, Jaidi diverted into his own net.
Everton: Martyn, Hibbert, Stubbs, Weir, Pistone, Carsley,
Gravesen, Cahill (Osman 69), Kilbane (McFadden 69),
Ferguson (Yobo 86), Bent. Subs not used: Wright, Watson.
Goals: Ferguson 45, Gravesen 75, Jaidi 85 og.
Bolton: Jaaskelainen, Hunt, N'Gotty, Jaidi, Hierro, Campo,
Giannakopoulos (Nolan 86), Okocha (Ferdinand 86), Speed,
Pedersen, Davies. Subs not used: Poole, Barness, Cesar.
Booked: Davies, Okocha, Hunt.
Goals: Davies 16, 59.
Ref: H Webb (S Yorkshire).