St Johnstone 2 Celtic 3: Celtic survived a St Johnstone comeback at McDiarmid Park to book themselves a place in the semi-finals of the Co-operative Insurance Cup last night.
An Anthony Stokes double and a Niall McGinn strike had the visitors three goals up after only 13 minutes and seemingly cruising but Sam Parkin reduced the deficit before the break.
Saints midfielder Murray Davidson headed in the second in the 54th minute to promise a remarkable fightback and, seconds from the end, the Hoops had keeper Fraser Forster to thank for avoiding extra-time when he pulled off a great save from substitute Jennison Myrie-Williams, who had replaced Steven Anderson at the interval.
However, while Parkin missed a decent chance to level earlier Celtic also passed up opportunities to draw further ahead.
The visitors were looking to bounce back from their home defeat by Rangers at the weekend and they began in promising fashion when they raced in to a three-goal lead after only 13 minutes.
Stokes, who was playing through the middle with Gary Hooper, broke the deadlock in the eighth minute.
The former Hibernian striker played the ball out to Ki Sung-Yueng on the right and, when the Saints defence failed to clear the South Korean's cross, Stokes quickly dispatched a low drive past Perth keeper Graeme Smith.
Moments later Smith had to make a fine save to prevent Stokes grabbing his second.
However, in the 11th minute, after pulling off a decent save from a Ki free-kick, the keeper was helpless to prevent McGinn squeezing the loose ball in from the angle.
It seemed too easy for the Parkhead men and two minutes later the tie appeared over when McGinn, making his first start of the season, took a Hooper pass and played the ball across to Stokes who beat Smith from close range, the ball going in off the post. It looked like free-flowing Celtic could score at will as St Johnstone struggled to get any sort of foothold in the game.
Parkhead midfielder Joe Ledley had the ball in the net after racing on to a Hooper pass which split open the home defence only to be
ruled offside, television pictures casting doubt on that decision.
However, in the 31st minute the Hoops' defensive frailties, which cost them dear against Rangers, were evident again when Parkin was allowed time and space to drive a left-footed volley past Forster from 16 yards.
Seconds before the break Forster was forced in to a fine block from Parkin after some more hesitancy in the Celtic defence.
St Johnstone boss Derek McInnes brought on Myrie-Williams for Anderson for the start of the second half and immediately the Perth side set about reducing the deficit further.
But in the 52nd minute, after more good work by McGinn on the right flank, it was Ledley who came close when his drive from 16 yards was deflected just wide of the target for a corner kick.
However, in the 54th minute Saints were right back in the game when Danny Grainger's corner was met by the unmarked Davidson who powered a header high in to the net.
Celtic looked stunned but moments later, with Saints chasing the leveller, Stokes released Hooper with a wonderful cross-field pass to put Hooper clean through but the former Scunthorpe player curled his shot from the edge of the box high and wide.
There was a lot of desperation about the Perth men in the closing stages but, in the last, Forster pulled off a tremendous save down to his right from Myrie-Williams's long-range effort to prevent extra time.