Substitute Sulley Muntari forced the ball home despite the efforts of Bolton defender Zat Knight to keep it out after Stephane Sessegnon had created the opening.
The late winner gave the Wearsiders the double over Owen Coyle’s team and ended Bolton’s run of five straight home victories in the top flight.
It was a rousing finish to a match that took a long time to come alive. Stand-in skipper Bolo Zenden put Sunderland ahead, only for substitute Ivan Klasnic to equalise three minutes from time.
Zenden, 34, looked up for it right from the start and early on curled a free-kick over the bar.
Bolton, however, came close to opening the scoring in the in the 11th minute when Kevin Davies set up Matt Taylor with a clever reverse ball. It seemed Taylor must score – only for goalkeeper Simon Mignolet to make a superb point-blank save.
The Trotters swept forward again eight minutes later and Daniel Sturridge went down in the area following a challenge by John Mensah – but referee Kevin Friend allowed play to continue.
Johan Elmander then dragged a free-kick wide of the post for Bolton, before Phil Bardsley escaped his marker but headed wide after being set up by Jordan Henderson.
The home side maintained the momentum and Sturridge carved out an opening for himself in the 26th minute – but Mensah made the clearance.
Play switched back down the other end and Zenden tried his luck on goal, only for Jussi Jaaskelainen to save with a degree of comfort.
It was brief respite and Bardsley scrambled away a shot in the 38th minute from Lee Chung-yong after he had been set up by Gary Cahill.
Bolton almost made the breakthrough a minute later when Sturridge’s effort came off Bardsley and rattled the bar.
Davies reacted quickly only for his effort to be turned around the post and the visitors breathed a sigh of relief.
Sunderland had another scare a minute before half-time when Mignolet spilled a shot from Taylor and Sturridge homed in – but Anton Ferdinand cleared.
The visitors went ahead in first-half stoppage-time when Zenden skipped around Jaaskelainen to score his first goal of the season after being set up by Sessegnon, with Bolton appealing in vain for offside.
Sunderland almost extended their lead a minute into the second half when Sessegnon forced a good save out of Jaaskelainen.
Bolton responded in the 50th minute with Sturridge firing a shot narrowly wide of the post after being set by Gardner.
Six minutes later Taylor got into a good position after being released by Davies but failed to test Mignolet, his effort going over the bar.
Sunderland were not content to sit on their lead and kept looking for openings, while the Bolton supporters were becoming increasingly frustrated at their team’s inability to break the visitors down.
They should have done so in the 66th minute but Lee failed to find the target from close range after Bardsley had diverted Sturridge’s goalbound effort.
Bolton came close to equalising again in the 80th minute when substitute Rodrigo carved a path through Sunderland’s defence but saw his shot beaten away by Mignolet.
Bolton appeared to have salvaged a point in the 87th minute when Rodrigo delivered a superb ball to the back post and Klasnic, who had also stepped off the bench, headed the ball into the far corner.
However, after Rodrigo had almost scored a stoppage-time winner for the hosts, the Black Cats made the decisive breakthrough.