The two sides were level at at the halftime break following two successful penalty goals each way, but Ireland broke clear with two tries in quick succession early in the second half to heap pressure on the Boks, and although they fought back, it wasn't enough in the end.
It was a great arm wrestle in the first half, with Siya Kolisi’s men enjoying more territory, but Ireland looked dangerous whenever they entered the South African danger zone.
The Boks couldn’t convert their territorial advantage and pressure into more points as a result of a some frustratingly unforced errors. Ireland, on the other hand, couldn’t get their fast-paced game going in the opening stanza as a result of the visitors’ defensive pressure.
It was Ireland who got early points on the board via the boot of their captain and flyhalf Johnny Sexton, who slotted an easy penalty goal when the Boks were punished at the breakdown.
Five minutes later the scores were even again when Damian Willemse replied with a closed range penalty goal after the Irish had played wing Kurt-Lee Arendse in the air.
Cheslin Kolbe, playing in first Test at fullback, was yellow carded for a dangerous tackle on Irish left wing Mack Hansen, giving Ireland numerical advantage for 10 minutes.
Sexton presented Willemse with his second attempt at goal when he was blown up for tackling Damian de Allende around the neck. However, Willemse sent his kick wide before Kolbe returned to action without SA conceding any points while he was in the sin bin.
The hosts nearly scored the first try of the match when Dan Sheehan kicked the ball through after he charged down a Willemse clearance kick. The Irish hooker managed to beat Jesse Kriel to the ball, however, he knocked the ball forward before dotting down.
But Ireland then won another penalty for a no-arms tackle and Sexton made it 6-3 with his second goal kick.
Kolbe was called forward for the easy penalty goal attempt right on the halftime whistle when the hosts were trapped offside, with the Bok fullback making no mistake with his kick to tie the scores at halftime.
Ireland started the second half with much more vigour and they scored the first try of the game when flanker Josh van der Flier went over in the corner following a powerful lineout maul. That gave the Irish an 11-6 advantage and some much needed injection in their efforts.
Two minutes later, another error at the breakdown gave Ireland a free attack, which they gratefully finished in the corner where Hansen scored, opening up a 10-point lead for the hosts at 16-6 with a lot of rugby still to be played.
However the momentum was now all with Ireland, who also managed to get a few crucial scrum penalties in their favour as they kept the pressure on the South Africans.
The Springboks finally scored their first try when replacement lock Franco Mostert was on hand to take the final pass and dot down, while Kolbe hit the upright with his conversion attempt as the men in green and gold reduced the deficit to 16-11 with just over 10 minutes remaining.
A third Sexton penalty goal opened up an eight-point gap for Ireland with seven minutes left on the clock, leaving the tourists to score twice for a win.
But Arendse then scored for SA as he took an Eben Etzebeth pass to dot down out wide as they narrowed the gap to 19-16 with full-time looming, and Ireland managed to run the clock for another famous and well-deserved win, stretching their win-record at the Aviva Stadium to 31 from 33 games.
Springboks 16 (6) – Tries: Franco Mostert, Kurt-Lee Arendse. Penalty goals: Damian Willemse, Cheslin Kolbe.
Ireland 19 (6) – Tries: Josh van der Flier, Mack Hansen. Penalty goals: Johnny Sexton (3).