The Toffees took the lead in freak circumstances in the 63rd minute when Howard beat opposite number Adam Bogdan with a clearance from his own box.
However, Ngog made it 1-1 four minutes later with a smart finish, before Cahill – once again named as Trotters captain despite a fee for him being agreed with Chelsea – smashed in the winner with 12 minutes remaining.
The result takes Bolton off the bottom of the standings and up to 18th, a point adrift of safety, while Everton remain 11th.
With talks ongoing over his proposed move to Chelsea, it had been a matter of interest as to whether or not Cahill would play this evening, and in the end, manager Owen Coyle’s decision to hand him the skipper’s armband paid off handsomely.
Jussi Jaaskelainen was unable to keep his place due to injury and was replaced in goal by Bogdan, while Chris Eagles came in for Ivan Klasnic.
For Everton, Landon Donovan, eligible to play for the Toffees for the first time since rejoining them on another two-month loan deal, came straight into the attack along with Denis Stracqualursi, who making his first league start.
Donovan’s first contribution was to win a free-kick in the opening minute which was curled into the danger zone by Leighton Baines but bounced harmlessly off Stracqualursi and behind.
At the other end, Gretar Steinsson flashed a cross-shot across the face of goal, but it was the hosts who were looking more threatening in the blustery conditions as Donovan looped a header into Bogdan’s arms and then cut the ball back for Stracqualursi, who fired wide.
Toffees striker Louis Saha was presented with an opportunity on the quarter-hour mark when Bolton centre-back Zat Knight inadvertently teed him up with a header from Baines’ cross, but the Frenchman skewed his effort off target.
Steinsson tried his luck again only to find the side-netting and an Eagles cross caused problems in the Everton area, Howard eventually tipping the ball over the bar.
The lively Donovan laid the ball to Leon Osman, whose shot from outside the box was gathered by Bogdan, and Knight slid in to beat Stracqualursi at the near post to Baines’ centre.
Everton looked to have the momentum again, with Osman driving an attempt just wide, but it took a block from Phil Jagielka to deny Ngog.
Jagielka sustained an injury in the incident which led to him being substituted soon after, Rodwell the man to take his place.
The Toffees were then left fuming in the 44th minute when Donovan went down in the box under the attentions of Sam Ricketts and referee Phil Dowd waved away their appeals for a penalty.
Moments later, though, they were indebted to Howard for keeping things level as he pushed Ngog’s strike over the bar.
Three minutes after the restart Baines’ corner came off Bogdan to Rodwell, who was unable to poke the ball in and like Osman, soon had to come off.
Howard then produced two good saves, tipping away efforts from Mark Davies and Ngog, before pulling off something even more spectacular.
The American lofted a huge kick down field which – assisted by the wind – travelled towards the Bolton box and bounced over the stranded Bogdan into the net.
It was another error of judgement on the part of Bogdan – who had made a couple of costly mistakes in his previous league appearance, the 5-1 defeat to Chelsea – and a shock blow for the visitors, but they responded well to equalise within four minutes, Ngog turning and slotting the ball into the corner.
Cahill then vindicated Coyle’s decision to play him by snatching what proved to be the decisive goal.
Everton failed to clear a set-piece properly and Eagles laid the ball off to the England international, who fired past Howard.
Wanderers survived a scare at the death when Baines rattled the crossbar with a free-kick, the ball eventually scrambled away as three precious points were secured.