Rio Hardy’s dramatic added-time penalty sent holders Rangers past Celtic into the SWPL Cup final.
The hosts, playing their first match under Elena Sadiku, took the lead through Chloe Craig’s second-half penalty after Kathryn Hill’s handball.
Hill scrambled in an equaliser and Kirsty Maclean swept the visitors in front only for another Craig spot-kick to level matters.
But Hardy held her nerve in the 95th minute for victory.
Partick Thistle host Hibernian in Sunday’s semi-final, with the final taking place on 23 March.
Though Rangers enjoyed the lion’s share of possession chances, Celtic carved some excellent openings in a tense contest.
Hill headed a Kelly Clark lob off the line after Amy Gallacher’s free-kick had been punched clear by visiting goalkeeper Victoria Esson.
Rachel Rowe should have put Rangers in front following Lizzie Arnot’s cutback, the midfielder’s shot going just wide, and Chelsea Cornet was also off target from the edge of the Celtic box.
Celtic were struggling to get out but should have led when Gallacher’s deflected cross landed in the path of Celya Barclais only for the full-back to turn wide on the volley.
Rowe threatened again from distance and her fierce rising effort clipped the top of the crossbar on its way out.
Cornet and Arnot tested Celtic keeper Kelsey Daugherty early in the second half and Shen Menglu dragged an effort wide at the opposite end.
The game turned game on 53 minutes as Paula Partido’s shot was blocked by Hill’s arm. Craig tucked away the resulting spot-kick with ease.
Daugherty made a superb double save to keep out Rio Hardy’s efforts but Rangers and Hill forced the ball over the line at the corner after Cornet’s shot was blocked.
And Rangers turned the screw to lead for the first time, Hardy cutting back and Maclean beating Daugherty with an emphatic finish.
Celtic were not done, though, and Tessel Middag upended Jenny Smith to give Craig another chance from 12 yards, which she took.
Yet, there was one final twist. Hardy chased Arnot’s through ball and was pulled back by Caitlin Hayes. Hardy stepped up and sent her side through.