Leigh Griffiths' late strike was enough to beat St Johnstone 1-0 and book holders Celtic a Scottish League Cup semi-final showdown with Hearts.

The Scotland striker had passed up three good chances in a game that came to life only after the break.

However, with seven minutes remaining he pounced from close range to fire in for a 1-0 win and ease recent pressure on the Parkhead side, albeit defender Dedryck Boyata was given a red card in the 90th minute by referee John Beaton for what appeared to be dissent.

Boss Brendan Rodgers, who revealed before the game that there was interest in him from a Chinese club in the summer, had come in for some criticism after Sunday’s 2-1 defeat at Kilmarnock confirmed the Hoops’ worst start to a Ladbrokes Premiership season in 20 years but Griffiths’ goal offered respite and keeps hope of a treble-treble alive.

Once again Rodgers rang the changes with goalkeeper Scott Bain making his second start of the season in goal, having played against Partick Thistle in the previous round.

Odsonne Edouard’s cross from the left found Griffiths three yards from goal but the Scotland striker’s header was straight at keeper Zander Clark, who saved with his feet.

However, there was an even better opportunity for Celtic seconds before the half-time whistle when the normally composed Callum McGregor latched on to an Olivier Ntcham pass inside the box only to drag his shot wide of the far post.

Celtic looked a different side at the start of the second half, forcing a couple of early saves from Clark, the first from McGregor, the second from Ntcham.

The home side survived both corners and from the next one which Saints failed to clear, Boyata’s header clipped the bar on the way over.

As Celtic’s pressure intensified Griffiths raced through on goal to screw his drive wide of the far post then Clark then tipped a piledriver from McGregor over the bar.

In the 72nd minute McGregor took out Saints skipper Joe Shaughnessy with a wonderful searching pass to set up Griffiths but Clark blocked the shot with his foot.

The Perth side struggled to escape their penalty box and the goal came when Forrest’s diving header from a Kieran Tierney cross was blocked by Saints defender Scott Tanser, with Griffiths on hand to return the loose ball into the net.