Western Province scored a try 6 seconds before full time to snatch a 16-21 Currie Cup semi-final victory and a place in the Currie Cup final against the Sharks in Durban.
The Capetonians will face the Sharks at Kings Park in next week's final after the Durban-based side beat the Blue Bulls 20-3 earlier in the day.
The Lions and Province exchanged blows in the opening minutes of the match as they were equally dangerous on attack.
The hosts had an early opportunity to score the first five-pointer of the game but they could not convert the pressure into points.
It was a classic battle of attrition as neither side dominated any areas of play and it was clear the match would go down to the wire.
Province drew first blood with flyhalf Demetri Catrakilis succeeding with a penalty conversion three minutes into the match.
The visitors handed the defending champions an advantage a few minutes later when wing Gerhard van den Heever was yellow-carded for a deliberate knock-down in the sixth minute as the Lions attacked inside Province's 22.
Lions flyhalf Elton Jantjies, who had a difficult night with his place-kicking, missed a shot at goal a minute later.
While they remained evenly matched, neither outfit showed respect for the ball as they missed perfect opportunities to put points on the board.
The Lions squandered four attempts at goal while Province also missed a chance to score early in the match.
The defending champions finally got onto the board with Jantjies converting a penalty in the 16th minute to draw the scores level at 3-3.
After a few attacking exchanges Province got themselves back in the lead as Catrakilis converted his second penalty kick of the evening on the half-hour mark.
The Lions were afforded three more chances to open a gap but Jantjies' and Ruan Combrinck's attempts at goal were off target, handing the Capetonians a 6-3 lead going into the half-time break.
After the recess the tempo moved up a notch as both teams attacked the gainline.
The Lions were the first to benefit from the change in pace with Jantjies receiving an opportunity and succeeding with a penalty conversion to level the score four minutes after the interval.
The home side took advantage of their new-found confidence as they ran in the first try of the evening with flanker Michael Rhodes crossing the chalk in the 49th minute.
Scrumhalf Michael Bondesio attacked from a loose-scrum inside his own 22 and grubbered the ball up field. Provinces' playmaker centre Juan de Jongh, who was in place to field the ball, fumbled and conceded at the breakdown.
The Lions established quick ball with Jantjies offloading to Rhodes who received it at pace and sprinted through to score under the posts, with Jantjies converting to give his side the lead for the first time in the match.
The next 10 minutes saw the visitors launching a series of attacks, but the Lions' defence held strong to deny the visitors a chance to close the gap.
Province finally pierced their defences, however, after continuous pressure, with replacement Joe Pietersen taking an inside gap inside the hosts' 22 to score.
Pietersen missed the conversion, which would have levelled the scores, but he made up for his slip-up a minute later when he converted a penalty conversion to give his side a one-point advantage.
With only four minutes left in the match, Province seemed to have secured a Currie Cup final berth but Jantjies converted a penalty to snatch back the lead for the hosts.
The visitors then drove more than 15 metres from a lineout to score the winning try, with eighthman Duane Vermeulen dotting down from the back of the maul, and Pietersen converted to secure the victory.
Final Score Golden Lions 16 (3) Western Province 21 (6)
Tries: Michael Rhodes
Conversion: Elton Jantjies
Penalties: Jantjies (2), Ruan Combrinck.
Tries: Joe Pietersen, Duane Vermeulen
Conversion: Demetri Catrakilis
Penalties: Catrakilis (2), Pietersen.
Referee: Marius Jonker
Assistants: Sindile Mayende, Stefan Breytenbach
Television Match Official: Johann Meuwesen
Golden Lions - 15 Andries Coetzee, 14 Ruan Combrinck, 13 Jaco Taute, 12 Alwyn Hollenbach/Dylan des Fountain, 11 Anthony Volmink, 10 Elton Jantjies, 9 Michael Bondesio, 8 Warren Whiteley, 7 Jaco Kriel, 6 Cobus Grobbelaar, 5 Franco van der Merwe, 4 Michael Rhodes, 3 Jacobie Adriaanse, 2 Callie Visagie, 1 JC Janse van Rensburg (capt).
Replacements: 16 Bandise Maku, 17 CJ van der Linde/Pat Cilliers, 18 Hendrik Roodt, 19 Derick Minnie, 20 Ross Cronje, 21 Butch James, 22 Deon Helberg.
WP - 15 Gio Aplon, 14 Gerhard van den Heever, 13 Juan de Jongh, 12 Marcel Brache, 11 Bryan Habana, 10 Demetri Catrakilis, 9 Nic Groom, 8 Duane Vermeulen, 7 Don Armand, 6 Deon Fourie (capt), 5 De Kock Steenkamp, 4 Eben Etzebeth, 3 Frans Malherbe, 2 Siyabonga Ntubeni, 1 Steven Kitshoff.
Replacements: 16 Deon Carstens, 17 Brok Harris, 18 Wilhelm van der Sluys, 19 Jebb Sinclair, 20 Louis Schreuder, 21 Damian de Allende, 22 Joe Pietersen.