The Blue Bulls booked their place in the Currie Cup Final after claiming a hard-fought 36-30 victory over Western Province in Pretoria on Saturday.
In a topsy-turvy match, in which the lead changed hands several times, the home side secured the result via a Piet van Zyl try in the game's closing stages.
The Springbok scrum-half spotted a gap at a ruck close to the visitors' try-line and dived over before Tian Schoeman added the extras from the kicking tee.
The result means the Bulls will face the Free State Cheetahs in next weekend's final in Bloemfontein.
Both sides crossed for three tries but in the end, it was the superb goalkicking from Schoeman, who contributed 21 points via five penalties and three conversions, which guided the home side to victory.
The Bulls were fastest out of the blocks and after taking the ball through several phases, Travis Ismaiel got over for the opening try in the 10th minute.
Province struck back shortly afterwards when Nizaam Carr dived over from close quarters after the visitors launched a driving maul close to the Bulls' tryline.
Schoeman then added three successive penalties before Robert du Preez slotted a three-pointer of his own, from the kicking tee, which meant the Bulls led 16-10 at half-time.
Du Preez added a well-taken drop goal early in the second half but Schoeman restored parity with his fourthb penalty in the 46th minute.
The visitors struck back via Werner Kok try after Juan de Jongh did set him up with a perfectly-timed pass in the build-up and when Du Preez added the extras, the visitors were in front for the first time with the score at 20-19.
Five minutes later, Schoeman added his fifth penalty to restore his side's lead but WP were back in front in the 57th minute when Jan de Klerk crashed over for a well worked pushover try.
The Bulls didn't panic though and replied via a Jason Jenkins five-pointer, which Schoeman converted, in the 64th minute.
The visitors continued to attack and regained the lead in the 72nd minute when Du Preez added his second penalty but the home side didn't surrender and sealed their place in the final when Van Zyl dotted down shortly before the end.
For Blue Bulls:
Tries: Ismaiel, Jenkins, Van Zyl
Cons: Schoeman 3
Pens: Schoeman 5
For Western Province:
Tries: Carr, Kok, De Klerk
Cons: Du Preez 3
Pens: Du Preez 2
Drop Goal: Du Preez
Blue Bulls: 15 Ulrich Beyers, 14 Travis Ismaiel, 13 Dries Swanepoel, 12 Burger Odendaal, 11 Jamba Ulengo, 10 Tian Schoeman, 9 Rudy Paige, 8 Arno Botha (c), 7 Jannes Kirsten, 6 Roelof Smit, 5 RG Snyman, 4 Marvin Orie, 3 Jacobie Adriaanse, 2 Jaco Visagie, 1 Lizo Gqoboka
Replacements: 16 Bandise Maku, 17 Martin Dreyer, 18 Pierre Schoeman, 19 Jason Jenkins, 20 Hanro Liebenberg, 21 Ivan van Zyl, 22 Joshua Stander, 23 Bjorn Basson
Western Province: 15 Cheslin Kolbe, 14 Werner Kok, 13 Juan de Jongh, 12 Huw Jones, 11 Leolin Zas, 10 Robert du Preez, 9 Dewaldt Duvenage, 8 Nizaam Carr, 7 Kobus van Dyk, 6 Rynhardt Elstadt, 5 Chris van Zyl (c), 4 Jan de Klerk, 3 Wilco Louw, 2 Bongi Mbonambi, 1 JC Janse van Rensburg
Replacements: 16 Mike Willemse, 17 Alistair Vermaak, 18 JP Smith, 19 JD Schickerling, 20 Stefan Willemse, 21 Jano Vermaak, 22 Johnny Kotze, 23 Scott van Breda
Referee: Marius van der Westhuizen
Assistant Referees: Cwengile Jadezweni, AJ Jacobs
TMO: Shaun Veldsman