The Scottish Premier League champions had been held at bay until Kyle Benedictus pulled down Lassad Nouioui after 39 minutes at Celtic Park.
Rab Douglas saved Scott Brown's spot kick, but Gary Hooper fired past the goalkeeper four minutes later.
Victor Wanyama's superb strike extended the lead four minutes after the break
Celtic had gone into the game on the back of their worst league start in 14 years and after an energy-sapping midweek Champions League draw with Benfica.
But it was two fresh faces - Tunisia striker Lassad having been given his first start and partnering the returning Hooper after Miku and Mikael Lustig were ruled out through injury - who were to prove significant.
Dundee had to re-arrange their defence, with on-loan Lewis Toshney ineligible to play against his parent club and Neil McGregor being injured, with their places taken by Benedictus and Steven Milne.