Aberdeen played better than they have done against Celtic for some time and for a while they looked capable of causing an upset with Eoin Jess driving forward from the midfield. David Rowson scored with a deflected shot in the eighth minute by which time alarm bells were ringing in the Celtic defence.
It took the promptings of Craig Burley and Morten Wieghorst to turn the game, although Celtic could point to an Alan Stubbs header and a Jackie McNamara shot both striking the woodwork.
Wieghorst equalised in the 21st minute, winning a tackle against Derek Whyte and sending a low drive past Jim Leighton from 18 yards. Ten minutes from the break Celtic took the lead. A Stubbs free-kick was headed on by Marc Rieper for Henrik Larsson to score with a another header.
Celtic might have increased their lead but found Leighton in superb form. The Scotland goalkeeper saved well from Burley, then denied Burley again a minute later and followed up to push a Harald Brattbakk shot over the bar.
Wieghorst missed another opportunity in the 71st minute when he shot over, but substitute Darren Jackson secured the points seven minutes from time.
Twice Leighton failed to clear his lines, allowing Jackson the chance to hook the ball into the net from close range. The win sets Celtic up for a vital match with Hearts at Tynecastle on Sunday.
Celtic (3-5-2): Gould; Rieper, Stubbs, Annoni; McNamara, Lambert, Burley, Wieghorst, Mahe; Larsson (Donnelly, 65), Brattbakk (Jackson, 60). Substitute not used: Hannah.
Aberdeen (4 4 2): Leighton; Smith, Inglis, Whyte, Kiriakov; O'Neill (Windass, 71), Rowson, O'Neil, Glass; Jess, Newell (Anderson, 78). Substitute not used: Dodds.
Referee: S Dougal (Burnside).