South African-born BJ Watling (45) kept New Zealand above the required rate but the visitors lost their way and stumbled to 140 for eight in the 33rd over.
However, Franklin and lower-order batsman Kyle Mills (26), produced some dogged batting to guide New Zealand to an unlikely one-wicket victory. The result handed New Zealand a 1-0 lead in the three-match series.
The Proteas came into the game on top of the ICC ODI rankings but had not played 50-over cricket since September and the top order struggled to cope with the difficult pitch.
Hashim Amla (13), Graeme Smith (7) and AB De Villiers (7) were all trapped in front of their stumps to reduce the home side to 37 for three in the 12th over.
Colin Ingram (29) and debutant Quinton de Kock (18) offered du Plessis some support, but both were well caught by Nathan McCullum to end useful partnerships and leave the home side 119 for five in the 30th over.
Du Plessis remained steadfast, and, with the help of a quick-fire 33 from 39 balls by all-rounder Ryan McLaren, was able to give the innings some much-needed momentum.
The right-handed Du Plessis brought up his fifth ODI fifty with a boundary to fine leg off Kyle Mills in the 39th over, and by that stage South Africa were 171 for five.
McLaren fell soon after, beginning a procession of wickets, including that of Du Plessis, which were shared between Williamson and McClenaghan.
Rory Kleinveldt (26) struck three big sixes to get the score past the 200 mark in the 46th over, and was the last to be dismissed with 22 deliveries still remaining in the innings.
New Zealand's reply got off to a poor start as opener Martin Guptill was run out without facing a ball and fellow opener Rob Nicol (4) fell soon after to Lonwabo Tsotsobe.
When Williamson became Tsotsobe's second victim in the eighth over, New Zealand were in trouble at 21 for three.
Captain Brendon McCullum (26) joined Watling and the pair began to steady the innings. However, their 52-run partnership ended amid farcical scenes as a power failure at Boland Park denied the skipper a review when he was adjudged lbw in the 18th over off Rory Kleinveldt.
Wickets continued to tumble during the black-out and when the power was finally restored, Zealand still required a further 69 runs for victory.
But Franklin, who had survived an umpire review for a catch in the 32nd over, and Mills frustrated the home side.
Mills was bowled by McLaren in the 44th over with 22 runs still needed, but Franklin continued to keep the South Africans at bay and a cover-drive for four guided his team over the line with 26 balls to spare.
The second game of the three-match series takes place in Kimberley on Tuesday.