Henrik Larsson grabbed his 30th goal of the season as Celtic stretched their Premier League lead to 19 points.
Larsson knocked in his 30th goal of the season at Dens Park
The prolific Swede was on hand to sweep home from close range after 68 minutes to double the Celtic lead.
Stilian Petrov had put the visitors in front when he finished off a flowing counter-attack late in the first half.
Dundee gave a good account of themselves early in the game but fell out of things before Sebastian Kneissl thumped in a late goal.
Dundee started brightly and the visitors found it difficult to deal with the lively Nacho Novo.
With seven minutes gone Garry Brady found the Spanish striker six yards from goal with a deep cross but, after controlling the ball perfectly on his chest, Novo made a mess of his shot and Stanislav Varga cleared.
Celtic's rookie keeper David Marshall then had to race from his line to clear as Novo threatened to run onto Dave Mackay's long ball.
In the 18th minute Julian Speroni made a fabulous fingertip save to keep out a 20-yard thunderbolt from Alan Thompson and a few minutes later the Dundee keeper had to get down smartly to smother a shot from Henrik Larsson.
Speroni was called into action again after 28 minutes when he flew across his goal to clutch a curling effort from Thompson.
Dundee were still posing a threat and Novo bamboozled Varga with some fancy footwork before cutting a shot into the side-netting.
And Mark Fotheringham tested Marshall with a dipping free kick from long range that the youngster did well to hold.
Eight minutes before the break Marshall was at full stretch to tip over a deflected strike from Neil Barrett and from the resulting corner Celtic launched a counter-attack to score.
Mohammed Sylla headed clear, allowing Stephen Pearson to run at the Dundee defence from his own half before releasing Petrov, who coolly slotted an angled shot past Speroni from 14 yards.
Stilian Petrov scored a first half goal at Dens Park
Two minutes later, Larsson was harshly ruled offside as he slid a pass from Sylla through Speroni's legs and into the net.
The flowing football that characterised the first half was sorely lacking after the interval as Dundee struggled to rediscover any rhythm.
Celtic too were having problems finding their passes and the game became bogged down in midfield.
But Celtic were able to increase their lead when substitute John Kennedy nodded a long free kick into Larsson's path and the Swede finished at the second attempt after Speroni had blocked his initial shot.
Novo almost grabbed a consolation goal in the 89th minute but Marshall was able to divert the raking shot.
But substitute Kneissl, on loan from Chelsea, was able to beat the impressive Marshall with a powerful strike from the edge of the penalty area deep into injury time.
Dundee: Speroni, Mackay, Sancho, Mair, Hernandez Santos, Barrett (Cameron 79), Fotheringham, Brady, Robb (Linn 72), Novo, Milne (Kneissl 72). Subs Not Used: Soutar, Jablonski.
Celtic: Marshall, McNamara, Balde, Varga (Kennedy 45), Agathe, Petrov, Lennon, Pearson, Thompson, Sylla (Smith 66), Larsson (Beattie 79). Subs Not Used: Douglas, Lambert.
Referee: W Young