Cape Town - The Bulls came out on top against the Sharks in a drama-filled South African Super Rugby derby at Kings Park in Durban on Saturday.
The Pretoria-side won 19-16 after leading 6-3 at half-time.
The Bulls returned to winning ways in a match that saw both teams reduced to 14 men following a double sending off.
The Bulls may have convincingly won the reverse fixture earlier this month, but that before last week's surprise hammering at the hands of the Chiefs, so it was anyone's guess how this one was going to go.
The first half was a cagey affair, short on quality, with far too many errors being committed by both sides.
The Bulls took a 3-0 lead in just the second minute when the Sharks were penalised for slowing the ball down at the ruck, but the home side returned the favour with a three-pointer of their own just minutes later when referee Mike Fraser spotted Hanro Liebenberg in an offside position.
Shortly after, the hosts were unlucky to have a try ruled out by the TMO when fullback Aphelele Fassi was able to gather a ball that had been kicked through and offloaded it to Robert du Preez, who went over. The TMO decided the ball had actually bounced out of touch before Fassi collected it, but it was a 50-50 call that could easily have gone the other way.
The Sharks then decided against an easy penalty kick to set up an attacking lineout, but the decision backfired as the Bulls managed to get the turnover and clear the danger.
Du Preez did go for poles shortly after, but this time the kick was wide, and instead it was the Bulls who took a 6-3 lead after they were awarded a penalty right in front.
That was how it stayed until the break, as a fairly dour half of rugby came to a welcome end.
After 40 minutes without a try, the Sharks scored the first five-pointer of the match straight after the kick off. The Bulls lost the ball in a compromising position, allowing Luke Stringer to float a long pass out wide where eighth man Daniel du Preez was waiting to score.
The conversion was missed, and it wasn't long before the Bulls hit back through their standout centre Jesse Kriel. It was actually his fellow midfield man Burger Odendaal who broke through the defence before offloading it to Kriel on his inside for the score.
Handre Pollard slotted the conversion as the Bulls took a 13-8 lead.
In the 56th minute, the two teams suddenly found themselves reduced to 14 men after a punching match broke out between Sharks hooker Armand van der Merwe and his opposite number Schalk Brits, leading to both men being red-carded.
Brits may have thrown the first punch after a cleanout at the ruck rubbed him up the wrong way, but van der Merve gave as good as he got and they were both sent off.
The Sharks then reduced the deficit to just two points thanks to another penalty kick from Du Preez following a scrum penalty, but Pollard soon slotted his third three-pointer of the afternoon as the Bulls re-established a five-point lead.
With 10 minutes to go, however, the Sharks drew level when their centre Andre Esterhuizen went over in the corner following a great break from Lukhanyo Am, who ran a great line to get them within sight of the tryline.
The conversion was missed, however, leaving the scores tied at 16-16, and with two minutes to go, Pollard broke the hearts of Sharks fans everywhere as he coolly slotted his fourth penalty of the afternoon to hand the Bulls victory.
It was a scrum penalty on their own throw that ultimately cost the home side, after the Bulls produced an almighty final shove to force the turnover and set up Pollard's winning kick.
Next week the Sharks are up against the Lions in an all-South African derby at Ellis Park on Friday, April 5 (19:10) while the Bulls travel to Argentina to face the Jaguares away (Saturday, April 6 - 15:05 SA time).
Tries: Daniel du Preez, Andre Esterhuizen
Penalties: Robert du Preez (2)
Try: Jesse Kriel
Penalties: Handre Pollard (4)
15 Aphelele Fassi, 14 Lwazi Mvovo, 13 Lukhanyo Am, 12 Andre Esterhuizen 11 Makazole Mapimpi, 10 Robert du Preez, 9 Louis Schreuder (captain), 8 Daniel du Preez, 7 Jacques Vermeulen, 6 Luke Stringer, 5 Hyron Andrews, 4 Ruben van Heerden, 3 Coenie Oosthuizen, 2 Akker van der Merwe, 1 Tendai Mtawarira
Substitutes: 16 Kerron van Vuuren, 17 Thomas du Toit, 18 Khutha Mchunu, 19 Gideon Koegelenberg, 20 Philip van der Walt, 21 Grant Williams, 22 Kobus van Wyk, 23 Curwin Bosch
15 Divan Rossouw, 14 Cornal Hendricks, 13 Jesse Kriel, 12 Burger Odendaal, 11 Rosko Specman, 10 Handre Pollard (captain), 9 Embrose Papier, 8 Duane Vermeulen, 7 Hanro Liebenberg, 6 Ruan Steenkamp, 5 Eli Snyman, 4 Jason Jenkins, 3 Trevor Nyakane, 2 Schalk Brits, 1 Lizo Gqoboka
Substitutes: 16 Corniel Els, 17 Simphiwe Matanzima, 18 Conrad van Vuuren, 19 Jannes Kirsten, 20 Tim Agaba, 21 Ivan van Zyl, 22 Manie Libbok, 23 Johnny Kotze