St Johnstone knocked Scottish Premiership champions Rangers out of the Scottish Cup in a penalty shootout.
Goalkeeper Zander Clark was the hero as he saved two spot-kicks moments after assisting in the Perth side’s 122nd-minute equaliser at Ibrox.
James Tavernier scored deep into extra time but Chris Kane touched in Clark’s effort to send the tie to penalties.
Tavernier and Kemar Roofe missed their spot-kicks and Ali McCann beat Allan McGregor to win the quarter-final.
St Johnstone will find out their semi-final opponents – with Hibernian and Dundee United already through – in Monday’s draw, with the last four due to take place on the weekend of 8 and 9 May.
And after winning the League Cup for the first time in their history in February, they are now two games away from completing a remarkable domestic cup double.
Although Rangers had made five changes from their midweek 1-1 draw at McDiarmid Park, St Johnstone had clearly taken encouragement from those 90 minutes.
The Perth side started well, going at Rangers even though they were nearly caught out early on the break when goalkeeper Clark had to deflect a goal-bound Glen Kamara shot away.
But the visitors’ confident start continued. Scott Tanser met a corner first time and hammered a left-foot shot that Allan McGregor had to punch clear.
Rangers, predictably, began to enjoy more possession. Alfredo Morelos headed at goal and Joe Aribo had a half-chance that he bundled wide, but back at the other end Stevie May almost caught out McGregor when he raced to close down a clearance.
As the break approached, Morelos sliced a shot over when left unmarked in the box at a corner, and then he stung the palms of Clark early into the second half.
The Colombia striker then got between Shaun Rooney and Jason Kerr but headed Tavernier’s cross off the far post with a thud.
St Johnstone as an attacking force were waning. Borna Barisic had a free-kick touched around the post, then Clark brilliantly denied Morelos at point-blank range when he got a leg to a downward header. He had to make further saves from Scott Wright and Kemar Roofe as the pressure intensified.
Callum Davidson’s side just needed one chance, though. Michael O’Halloran broke free but couldn’t get the ball out of his feet quickly enough.
Into extra time the clock ticked. Clark was soon in action again, clawing away a near-post Filip Helander effort.
But then O’Halloran had a big chance when he broke from midfield and found himself one-on-one with McGregor, only for the goalkeeper to get down low to deny him.
Then, after no goals, two ones arrived in an enthralling finish.
Tavernier found space in the box to meet a cross and nod the ball beyond Clark. And with it arriving so late, it looked like it would be the final part of the story.
But with seconds left, Clark went forward at a corner and headed downwards, with Kane getting the final touch to take the game to penalties.
Tavernier had his opening spot kick saved, and then Clark again got down low to push away the home side’s fourth attempt from Roofe.
After Liam Craig, Callum Booth and Jason Kerr all netted their spot kicks, McCann beat McGregor with his penalty to win the tie.
Man of the match – Zander Clark
What did we learn?
St Johnstone pressed Rangers high and at times knocked them off their stride. But even when Rangers did enjoy large spells of possession, their ability to unlock the opposition defence was not working as well as it has for the vast majority of the season.
But it was as dramatic a finish as you will see. Goalkeeper Clark’s decision to go forward at a corner paid dividends and saved St Johnstone when their cup dreams looked over.
And now, it could be a dream cup double in Davidson’s first full season in charge.
Rangers host Celtic at Ibrox on Sunday (12:00 BST), while St Johnstone are away to Hibernian the day before (15:00).
- 5HelanderSubstituted forSimpsonat 111′minutes
- 17AriboBooked at 71mins
- 10DavisSubstituted forDefoeat 120+4′minutes
- 7HagiSubstituted forWrightat 68′minutes
- 20MorelosBooked at 36minsSubstituted forRoofeat 81′minutes
- 5KerrBooked at 36mins
- 18McCannBooked at 55mins
- 10WotherspoonBooked at 45minsSubstituted forBrysonat 71′minutes
- 3TanserSubstituted forBoothat 101′minutes
- 14MaySubstituted forO’Halloranat 75′minutes
- 17MelamedSubstituted forKaneat 58′minutesBooked at 90mins
- Alan Muir
Match ends, Rangers 1(2), St. Johnstone 1(4).
Penalty Shootout ends, Rangers 1(2), St. Johnstone 1(4).
Goal! Rangers 1(2), St. Johnstone 1(4). Alistair McCann (St. Johnstone) converts the penalty with a right footed shot to the bottom left corner.
Penalty saved! Kemar Roofe (Rangers) fails to capitalise on this great opportunity, right footed shot saved in the bottom right corner.
Goal! Rangers 1(2), St. Johnstone 1(3). Jason Kerr (St. Johnstone) converts the penalty with a right footed shot to the high centre of the goal.
Goal! Rangers 1(2), St. Johnstone 1(2). Jermain Defoe (Rangers) converts the penalty with a right footed shot to the bottom right corner.
Goal! Rangers 1(1), St. Johnstone 1(2). Callum Booth (St. Johnstone) converts the penalty with a left footed shot to the bottom left corner.
Goal! Rangers 1(1), St. Johnstone 1(1). Borna Barisic (Rangers) converts the penalty with a right footed shot to the bottom left corner.
Goal! Rangers 1, St. Johnstone 1(1). Liam Craig (St. Johnstone) converts the penalty with a right footed shot to the bottom right corner.
Penalty saved! James Tavernier (Rangers) fails to capitalise on this great opportunity, right footed shot saved in the top centre of the goal.
Penalty Shootout begins Rangers 1, St. Johnstone 1.
Second Half Extra Time ends, Rangers 1, St. Johnstone 1.
Substitution, Rangers. Jermain Defoe replaces Steven Davis.
Goal! Rangers 1, St. Johnstone 1. Christopher Kane (St. Johnstone) left footed shot from the centre of the box to the bottom left corner. Assisted by Zander Clark following a corner.
Corner, St. Johnstone. Conceded by Borna Barisic.
Connor Goldson (Rangers) wins a free kick in the defensive half.
Foul by Shaun Rooney (St. Johnstone).
Goal! Rangers 1, St. Johnstone 0. James Tavernier (Rangers) header from the centre of the box to the bottom left corner. Assisted by Joe Aribo.
Corner, Rangers. Conceded by Craig Bryson.
Attempt missed. Liam Craig (St. Johnstone) left footed shot from outside the box is just a bit too high.