Match ends, Dundee 1, Celtic 2.
Celtic moved to within one win of their sixth straight Scottish Premiership title with victory at Dundee.
The hosts frustrated Celtic for most of the first half, Dedryck Boyata’s header cleared off the line by Paul McGowan.
But Jozo Simunovic’s flick towards goal deflected off Kevin Gomis to creep in, and Stuart Armstrong headed in a James Forrest cross to double the lead.
Marcus Haber missed two good chances for Dundee, but Faissal El Bakhtaoui’s 25-yard stunner ensured a nervy finale.
Ultimately though, Brendan Rodgers’ side extended their unbeaten domestic run this season to 36 matches.
With a 25-point lead over second-placed Aberdeen and nine games left, Celtic could clinch the title in their next Premiership match against Hearts at Tynecastle on Sunday, 2 April, although they would already be champions if the Dons fail to secure at least a point at Dundee on 31 March.
Paul Hartley’s side remain in eighth place, four points off the top six.
We have witnessed many different types of performances from the Celtic juggernaut as it rolls relentlessly towards six titles in a row. This was a mixture of the good and the ugly – there is rarely bad.
When things are not going their way, they simply put their heads down and grind away at teams until they finally buckle.
It’s not always pretty but it’s usually positive, and so it was in the first half against a very well organised Dundee side determined to change their fortunes after two straight defeats.
Celtic dominated but despite trying to make progress down both flanks, through the middle and enjoying set-pieces galore, Dundee stood firm and looked likely to head into the break all-square.
But the buckle came just seconds before the whistle when – moments after McGowan cleared Boyata’s header off the line – Simunovic fired in at close range, with a little help from a deflection off the back of Gomis.
The goal certainly fired Celtic up and took some of the wind out of Dundee’s sails.
Rodgers’ side flew at the Dark Blues from the restart and doubled their lead via a 12th goal of the season from Armstrong, who flicked his header expertly past Scott Bain after a fabulous run and cross from Forrest.
Most observers of Celtic this season would have bet their mortgage on that being game over. Ultimately that proved correct but the thanks for that went to the defence.
Hartley’s side went into this fixture having failed to pick up a point or score a goal in March, following a productive February that featured an impressive 2-1 win over Rangers.
The same spirit was evident at the start and end of this match as Dundee fought, pressed and harried Celtic all over the pitch and made life difficult for the visitors’ flair players such as Moussa Dembele and Scott Sinclair.
Hartley once again showed his tactical prowess when he changed things in the second half and watched his side claw their way back through a spectacular solo effort from El Baktaoui.
The Moroccan striker came off the bench and skipped through the Celtic midfield before firing into Craig Gordon’s top right-hand corner. It was simply stunning.
Haber should have scored before that but screwed his effort wide. It was a defeat for the Dee but far from a demoralising one.
Second Half ends, Dundee 1, Celtic 2.
Foul by Nick Ross (Dundee).
Kieran Tierney (Celtic) wins a free kick in the defensive half.
Kevin Holt (Dundee) is shown the yellow card for a bad foul.
Patrick Roberts (Celtic) wins a free kick in the defensive half.
Foul by Kevin Holt (Dundee).
Moussa Dembele (Celtic) is shown the yellow card.
Foul by Patrick Roberts (Celtic).
Kevin Holt (Dundee) wins a free kick in the defensive half.
Foul by Mikael Lustig (Celtic).
Craig Wighton (Dundee) wins a free kick on the right wing.
Substitution, Celtic. Erik Sviatchenko replaces Scott Sinclair.
Attempt missed. Marcus Haber (Dundee) header from the centre of the box misses to the right.
Attempt blocked. Moussa Dembele (Celtic) right footed shot from the centre of the box is blocked.
Attempt missed. Faissal El Bakhtaoui (Dundee) right footed shot from outside the box is too high.
Goal! Dundee 1, Celtic 2. Faissal El Bakhtaoui (Dundee) right footed shot from outside the box to the top right corner. Assisted by Kevin Holt.
Substitution, Dundee. Faissal El Bakhtaoui replaces Henrik Ojamaa.
Eboue Kouassi (Celtic) is shown the yellow card for a bad foul.
Foul by Moussa Dembele (Celtic).
Kevin Holt (Dundee) wins a free kick in the attacking half.
Substitution, Celtic. Patrick Roberts replaces James Forrest.
Substitution, Celtic. Eboue Kouassi replaces Callum McGregor.
Substitution, Dundee. Nick Ross replaces Tom Hateley.
Corner, Celtic. Conceded by Darren O’Dea.
Corner, Celtic. Conceded by Scott Bain.
Corner, Dundee. Conceded by Dedryck Boyata.
Scott Brown (Celtic) is shown the yellow card for a bad foul.
Foul by Scott Brown (Celtic).
Paul McGowan (Dundee) wins a free kick in the attacking half.
Attempt missed. Marcus Haber (Dundee) right footed shot from outside the box is close, but misses to the right.
Substitution, Dundee. Craig Wighton replaces James Vincent.
Goal! Dundee 0, Celtic 2. Stuart Armstrong (Celtic) header from very close range to the high centre of the goal. Assisted by James Forrest.
Tom Hateley (Dundee) wins a free kick in the attacking half.
Foul by Scott Brown (Celtic).
Corner, Celtic. Conceded by Mark O’Hara.
Stuart Armstrong (Celtic) wins a free kick in the defensive half.
Foul by Tom Hateley (Dundee).
Attempt saved. Kevin Holt (Dundee) left footed shot from outside the box is saved in the bottom left corner.
Foul by Jozo Simunovic (Celtic).