That is it for our live coverage of this gruelling South African derby. Thank you for following along with us. We hope you join us again next weekend for the final between the Bulls and Leinster in Dublin.
The Bulls will now travel to Dublin, where they will take on Leinster in the title-decider. It'll be the first time the final takes place outside of South Africa. As for the Sharks, this is the end of the road for them. Their season comes to a crashing halt.
FULL-TIME: BULLS 25-13 SHARKS. The Bulls steamroll the Sharks to book their place in a second consecutive URC final.
And the scrum penalty go to the Bulls,
The Sharks bash away at the Bulls line, but when they finally create an overlap and send the ball out wide to attack that space, there's a forward pass. You'd think that is the end of the contest. They absolutely had to score there. It's a 12-point game and we're into the final minute.
Fassi with a brilliant 50-22 kick fielded and fumbled by Johannes. It's now or never for the Sharks.
Willie le Roux overcooks his kick and puts it directly into touch. But the Bulls recover by stealing the ball at the lineout.
Brilliant interplay between Mapimpi and Fassi sees the Sharks move forward, but a knock on breaks up that play. Mapimpi then concedes a penalty and another further 10-metre march up field, again for backchatting to the referee. The Sharks can ill-afford this kind of behaviour.
Cobus Wiese can't keep hold of the ball and the Sharks are all over that loose ball. Jordan Hendrikse spots acres of space in behind the Bulls defence and kicks the ball there, but Le Roux races back to prevent a 50-22.
The Bulls will feed the lineout inside the 22 after Fassi's clearance kick didn't travel the desired distance.
Canan Moodie has been sensational in the air for the Bulls. The Sharks have no solution for the problems he is causing them.
Lukhanyo Am, who has looked lethargic tonight, just dropped the ball cold with the Sharks hot on attack. Now the possession is back with the Bulls.
Trailing by 12, the Sharks have it all to do now on enemy territory.
CONVERSION, BULLS, JOHANNES. 25-13.
TRY, BULLS, KRIEL. 23-13. Like a knife through butter, the Bulls backs slice through the Sharks defence to score. Papier started with move with a darting run, he offloaded to Wiese, who also stormed forward before freeing up Kriel to apply the finishing touches.
Keagan Johannes' penalty attempt is no good.
The Bulls are now rumbling forward with a maul. From there, they go to the air and Moodie chases and gathers the ball to retain possession for the hosts. Mapimpi is right there with him, but he plays the ball on the ground and then concedes a further 10m for shouting at the ref.
Mapimpi darlings down the left flank, but as he is brought down, Van Staden goes in over the ball and wins a penalty for the Bulls.
Ethan Hooker is simply magical. He always makes post-contact metres and he just pulled off a superb offload to keep a Sharks attack going. Unfortunately, the play breaks down a couple of phases later as the visitors are pinged for playing the ball on the ground.
We're into the final 20 minutes of this see-saw encounter.
The Sharks have been more direct in their play since the start of the second half and this approach has flayed the Bulls.
PENALTY, BULLS, JOHANNES. 18-13. The Bulls extend their lead to five.
The Bulls are fighting tooth and nail to get over the advantage in the face of stubborn Sharks defence. The referee spots the Sharks streaking offside and awards the penalty to the Bulls.
This game is opening up now. Emmanuel Tshituka breaks the line and goes on a scintillating solo run. He is eventually tracked down by de Klerk. Jaden Hendrikse is on hand to support him, but the scrumhalf's kick into space sits up for Keagan Johannes, who passes to Moodie, who in return chip kicks.
And score remains 15-13 as Jaden Hendrikse takes over the kicking duties from his brother Jordan, but also misses the conversion attempt.
TRY, SHARKS, HOOKER. 15-13. It's game on. Hooker steps inside the last Bulls defender to score the Sharks' second try of the night.
Lukhanyo Am dives for the line, but he is in touch. The Sharks still get a penalty and set a lineout.
The Sharks are looking more and more confident in their attacking play as this game wears on.
Hooker busts through the first tackler, but gets the ball ripped off him by Goosen.
Hanekom will play no further part in this game. He is taken off the field on the medical cart and has been replaced by Marco van Staden.
Oh this is not good for Cameron Hanekom, who is out on the ground with what looks like a serious injury.
The tables have turned and the Bulls are now the team under pressure.
The Bulls pepper the Sharks with high bombs, but Ethan Hooker does well to secure the ball in the air.
Jordan Hendrikse's kick is wide again.
TRY, SHARKS, MAPIMPI. 15-8. The Sharks use the full width of the field to stretch the Bulls defence, creating an overlap for Mapimpi to run in an easy try.
From the scrum, the Sharks go to their power runner Andre Esterhuizen.
The Sharks exhibit excellent handling skills with a sequence of offloads. But then Willie le Roux intervenes with an attempted intercept. He can't take the ball cleanly and knocks it on. Scrum for the Sharks.
The Sharks start the second half on the front-foot, with replacement Emmanuel Tshituka making a turnover.
KICK-OFF: Goosen restarts the game to get the second half underway.
HALF-TIME: BULLS 15-3 SHARKS. And the answer is an emphatic no, as the Bulls hold the Sharks ball-carrier up off the ground in the in-goal arena to go into the break 15-3 to the good.
Here come the Sharks again. Can they score this time?
The referee calls for an advantage again and once nothing comes off the Sharks' attacking endeavour, he blows his whistle and hands a third yellow card to the Bulls. This time Marcell Coetzee is send packing.
Now the Bulls are losing their heads. They concede a penalty and then the referee march them back 10 more metres for backchatting. The Sharks kick for touch. They want to play.
How did the Bulls survive that?! As the Sharks come charging in, David Kriel beats everyone to the breakdown and wins a sensational turnover penalty for the home side.
With yellow cards shown to Vorster and Hanekom, the Bulls are down to 13 players at the moment. The time to strike is now for the Sharks, who kick to the line.
The Sharks do well to win back the ball from their own restart. They are in possession within striking distance. The Bulls then concede a penalty and a yellow card as Cameron Hanekom is send off for foul play on Siya Kolisi.
PENALTY, BULLS, GOOSEN. 15-3.
Goosen will kick at goal.
The Bulls earn a penalty advantage, but they play on. There's a knock on, so the referee brings them back for the penalty.
The Bulls lineout may be malfunctioning, but their scrum is absolutely dominant. They just won another penalty at the set-piece. Goosen kicks to the line. Grobbelaar finally finds his jumpers.
Another Bulls lineout gets stolen by the Sharks. And another Sharks attack breaks down due to an unforced error, this time Lukhanyo Am is the guilty party for throwing a clear forward pass.
It's end-to-end stuff at Loftus. But apart from all the free-flowing running rugby on display, there's also been some big, crunching hits.
Jordan Hendrikse misses a second penalty attempt.
The lineout goes horribly wrong for the Bulls, but the Sharks then loose the ball as well. The Bulls kick it to Fassi, but Mapimpi tracks back and launches a counter attack. Harold Vorster then tackles Mapimpi, but plays the ball on the ground without releasing the player. Penalty to the Sharks, yellow card for Vorster.
Willie le Roux's little dink over the top bounces kindly for the chasing Goosen. But the latter's inside pass is intercepted by Lukhanyo Am, who turns around and hacks it down field.
PENALTY, SHARKS, JORDAN HENDRIKSE. 12-3.
The Bulls concede a penalty and the Sharks will line up another kick at goal.
The Sharks' Boks need to step up and take the initiative here. They are second best at the moment.
Goosen's conversion attempt is off target.
TRY, BULLS, MOODIE. 12-0. The Bulls score their second try after a poor clearance kick by Jaden Hendrikse. Tshituka had won a turnover on the ground for the Sharks, but Hendrikse slipped as he was about to kick the ball deep. de Klerk pounces on the ball and kicks to the other corner for Moodie to score.
Off the scrum, the Bulls go to Le Roux, who switches up play with de Klerk. But the latter runs into a brick ball.
From the 22 drop-out, Tshituka takes it up to the Bulls' defensive line with a barnstorming carry. But all his work is in vain as Kolisi drops the ball cold.
Jordan Hendrikse's get the distance on his long-range shot, but the direction is wayward.
Penalty to the Sharks, as Goosen is penalised for playing Jaden Hendrikse without the ball. The Sharks will kick at goal.
The Bulls go to the air again. Moodie leaps high and gets his hands up to knock it backwards. Unfortunately, there's no other Bulls player close by.
The up and under doesn't go according to plan for the Bulls as the Sharks pounce on the loose ball. But as they work the right side of the field, Fassi is bundled into touch.
Jaden Hendrikse puts the ball in and takes it out quickly to ease the pressure on his pack. They send the ball wide to Mapimpi, but they step into touch. And from the resultant lineout, the Bulls win a penalty.
The Sharks will scrum down again.
Bulls wing Sebastian de Klerk is having himself a game. He has been the best player on the park in these opening 10 minutes.
Jordan Hendrikse restarts the match with a deep kick-in. Papier executes a decent exit kick and the Bulls' chasers do well to pressurise the Sharks.
CONVERSION, BULLS, GOOSEN. 7-0.
TRY, BULLS, DE KLERK. 5-0. The Sharks couldn't capitalise on Tshituka's lineout steal, conceding possession and the Bulls score a superb try.
The Bulls kick for touch, but they can't hold onto possession as Tshituka steals it for the Sharks.
Nevermind, the try is no good. The entire Sharks backline was offside. The Bulls a relieving penalty. That is a big let-off for the hosts.
TRY, SHARKS., ETHAN HOOKER. 0-5. The Bulls simply shove the Sharks off their own ball at scrum time, but as they try to spread it wide quickly, Ethan Hooker reads play beautifully and intercepts the ball inside the 22 to score.
Willie le Roux is not enjoying the best start to this game. He just three a big forward pass, his third mistake since the start of the game.
The Sharks scrum retreats under immense pressure from the Bulls pack, but Hendrikse again manages to get the ball out. The Sharks are now attacking inside the 22.
That's a big scrum from the Bulls, but the Sharks manage to get the ball out and launch an attack of their through Mapimpi and Fassi. Willie le Roux is back to cover for the Bulls. He knocks on.
The Sharks secure the ball at the set-piece and go to the air immediately. The Bulls knock on.
And from the outset, the Bulls show their attacking intent with a solid run from de Klerk before Le Roux kick-passes to Moodie on the other wing. Unfortunately, the ball goes into touch. Lineout to the Sharks.
KICK OFF: Hendrikse gets the semi-final underway.
KICK OFF: Hendrikse gets the semi-final underway.
The Bulls and Sharks will lock horns in this tantalising encounter to determine who will join Leinster in the 2025 URC final. If the Bulls win, it's be their second successive final and third overall. If the Sharks win, they advance to the title-decider for the first time ever.
Sharks: 15 Aphelele Fassi, 14 Ethan Hooker, 13 Lukhanyo Am, 12 Andre Esterhuizen, 11 Makazole Mapimpi, 10 Jordan Hendrikse, 9 Jaden Hendrikse, 8 Siya Kolisi (captain), 7 Vincent Tshituka, 6 James Venter, 5 Emile van Heerden, 4 Corne’ Rahl, 3 Vincent Koch, 2 Bongi Mbonambi, 1 Ox Nche.
Subs: 16 Fez Mbatha, 17 Ntuthuko Mchunu, 18 Hanro Jacobs, 19 Deon Slabbert, 20 Phepsi Buthelezi, 21 Emmanuel Tshituka, 22 Bradley Davids, 23 Yaw Penxe.
Bulls: 15 Willie le Roux, 14 Canan Moodie, 13 David Kriel, 12 Harold Vorster, 11 Sebastian de Klerk, 10 Johan Goosen, 9 Embrose Papier, 8 Cameron Hanekom, 7 Ruan Nortje (captain), 6 Marcell Coetzee, 5 JF van Heerden, 4 Cobus Wiese, 3 Wilco Louw, 2 Johan Grobbelaar, 1 Jan-Hendrik Wessels.
Subs: 16 Akker van der Merwe, 17 Alulutho Tshakweni, 18 Mornay Smith, 19 Jannes Kirsten, 20 Marco van Staden, 21 Zak Burger, 22 Keagan Johannes, 23 Devon Williams.
Bulls v Sharks, URC, 18:15
Hello and welcome to our live coverage of the highly anticipated URC semi-final clash between the Bulls and the Sharks.