St Johnstone cup hero Shaun Rooney helped send the holders back to Hampden after he opened the scoring in a 2-0 win at Dundee.
The Dark Blues created the better of the opportunities at Dens Park but couldn’t find a way past the impressive Zander Clark as their goal drought stretched to four matches.
And they were hit by a sucker punch on 70 minutes as Rooney’s low shot deflected past Adam Legzdins for the only goal of the game.
Ali Crawford then went on to seal the semi-final place for Callum Davidson’s men in the 84th minute.
Dundee’s issue of late hadn’t been getting into good areas or hitting the target, it had been finding that finishing touch to put the ball in the net.
And the opening half followed that same formula. There wasn’t much between the sides but Zander Clark was certainly the busier keeper.
The Scotland call-up denied a powerful Jordan McGhee header early on before pushing a Cammy Kerr effort behind on the half-hour.
Saints had been getting joy down the left flank with Callum Booth impressive but had only a long-range David Wotherspoon shot on target.
Nearing half-time they did almost take advantage of hesitancy at the back from the home side but Glenn Middleton fired well wide from a tight angle.
Saints make misses pay
After the break Dundee continued to find Clark in the way as he first stopped a Griffiths free-kick before denying Paul McMullan on the rebound.
And Saints made them pay for the missed chances as they took the lead with their first real effort on target.
A 70th-minute corner fell at the feet of Rooney, scorer of the goal that won the cup last season, to squeeze the ball home via a deflection.
Dundee threw on substitutions in a bid to stay in the competition.
However, they were caught on the break as Crawford sealed the victory in the 84th minute with an accurate low finish to book a semi-final spot.
Dundee: Legzdins, Kerr, Fontaine, Ashcroft, Marshall, Byrne, McGhee (Sheridan 75), Anderson (McCowan 81), McGowan, McMullan, Griffiths.
Subs not used: Lawlor, Sharp, Jakubiak, Elliott, Robertson, Panter.
St Johnstone: Clark, Rooney, Ambrose, Booth, McCart, Craig, Wotherspoon, Crawford (Gilmour 90), Brown (O’Halloran 45), Kane (Hendry 90), Middleton (May 64).
Subs not used: Parish, Devine, Vertainen, Dendoncker, Ballantyne.
Referee: Steven McLean
Attendance: 4,707 (1,307 away fans)