Both sides scored one try apiece, but five penalty goals by Dan Biggar and his replacement, Owen Farrell, proved the difference on the score board.
The visitors deserved the win, even if just for their second half effort. Trailing 12-3 at the break, the men in red cut their error rate in the second 40 minutes and outkicked the Springboks. The won the aerial battle and kicked clever contestable instead of line kicks, taking the South Africans’ drive out of their arsenal.
The Boks held sway in the first half, when their forwards dominated play and forced the visitors into a number of errors, with Handre Pollard, in his 50th Test, kicking four penalty goals. The pivot lost his aim in the second half though, missing two kicks that made a massive difference in the final result.
The Lions will take huge confidence out of their second half effort. They outplayed the Boks tactically, found a way to nullify their forward power and used every opportunity to score.
The Boks had two tries disallowed by the TMO for earlier infringements, and were on the receiving end of a couple of tough calls by Nic Berry, but in the end they simply did not deliver enough in the second half.
The test started frantically, with a great hit by Lukhanyo Am in the midfield confirming early dominance by the Springboks. The Boks also stood strong in the scrums early on and applied the most pressure.
The first kickable chance came 12 minutes in. A weak kick by Biggar handed Pollard a counter-attacking opportunity and with the red team in strife, they did not roll away after a tackle. The Bok flyhalf kicked the first points of the series from 30 meters.
The Bok scrum continued to dominate in the early stages and from that platform, Faf de Klerk broke away and kicked cleverly. He was tackled late and Tom Curry was shown as the offender. Pollard took little time to point to the posts and slotted a second, again from the 30 meter range. That pushed the lead to six after 16 minutes.
Biggar had his first chance for points two minutes later, as Damian de Allende was too quick off the defence line. The kicked went through the middle of the posts and the visitors were on the board.
Siya Kolisi had a line break from a maul, but the attack was snuffed by Itoje, who won the penalty near his own goal line and the chance went begging.
The Boks, with Cheslin Kolbe in particular, were winning the aerial battle at this stage. The Lions were guilty of not rolling away from the tackle and Berry spotted that early. Pollard kicked a third penalty goal 25 minutes in when Daly did just that and the lead was back to six points.
Pollard got another opportunity two minutes later, this time when the Lions coming into a ruck from the side. The 40m effort was a mere formality for the experienced kicker.
Biggar missed a penalty after 35 minutes before Daly missed another long range effort after a Bongi Mbonambi high tackle, but few would argue that the half-time score of 12-3 to SA was not a good reflection on this most anticipated rugby match.
The second half did not start well for the Boks and that became a theme of the final 40 minutes.
Kwagga Smith was caught in possession, the Lions got a penalty and then another as they tried to drive the Boks over the line. The second maul delivered result and Luke Cowan-Dickie stood up, five Test points richer. Biggar added the conversion to cut the lead to two points.
Willie le Roux then thought he scored following a neat break by Am, who kicked ahead, but the TMO, Marius Jonker, ruled that Le Roux was in front of his team-mate.
Jonker was called into action a minute later again, this time to confirm Faf de Klerk's try.
The Boks were put in attack by Pieter-Steph du Toit, who fed Makazole Mapimpi and after a kick ahead and a couple of fumbles, De Klerk dotted down. Pollard missed the conversion, but the lead was back to seven after 50 minutes.
Biggar kicked a penalty goal from straight in front after Smith was penalised in a tackle and suddenly the Lions started to squeeze.
The Lions flyhalf added another three points when Mapimpi was ruled off side after the visitors won a ball in the air, a theme that was starting to repeat itself at an alarming rate for the home side.
The men in red enjoyed a productive period, putting the Boks under pressure with solid defence and their pack started to hold on to possession and cutting their error rate.
Biggar kicked a fourth penalty goal to put the Lions in the lead after 62 minutes, and shortly thereafter Le Roux was up-ended by Hamish Watson, but Pollard's long range effort from 45m was out was to the right.
To add to the drama, De Allende thought he scored, but Jonker spotted that Kolbe lost the ball in the air in a prior movement.
A late penalty goal by Farrell all but sealed the deal for the Lions and although the Boks had one more chance in the last play, the visitors held out for a hard-fought win.
Springboks 17 (12) - Try: Faf de Klerk. Penalty goals: Handré Pollard (4).
British & Irish Lions 22 (3) - Try: Luke Cowan-Dickie. Conversion: Dan Biggar. Penalty goals: Biggar (4), Owen Farrell.