Vincent scored a gritty 90, but South Africa won by 19 runs to take a 2-0 lead in the five-match series.
South Africa scored 201 for nine after winning the toss and choosing to bat on a sluggish pitch, then dismissed New Zealand for 182 in 47.5 overs.
New Zealand number three Vincent faced 109 balls and hit nine fours and two sixes.
His dismissal in the 43rd over, when he pulled a short delivery from fast bowler Makhaya Ntini [ Images ] and was caught at mid-wicket, reduced the visitors to 165 for eight.
New Zealand seemed to be cruising to victory on 127 for four in the 31st over.
Then medium pacer Justin Kemp had Jacob Oram [ Images ] caught behind for 11 to rekindle South Africa's hopes.
Ten balls later, left-arm spinner Nicky Boje spotted Brendon McCullum [ Images ] advancing up the pitch and reacted by pitching his delivery wide.
McCullum's shot missed and wicketkeeper Mark Boucher [ Images ] struck with reptilian speed to stump the New Zealander for one.
The slide claimed three wickets for 10 runs in the space of 22 deliveries and New Zealand were suddenly 137 for seven.
Vincent's dismissal nine overs later effectively ended New Zealand's challenge.
Styris varied the pace and style of his deliveries effectively to take two for 29 from his 10 overs. He dismissed Smith, who scored 36, and Shaun Pollock [ Images ] for nought in consecutive overs.
Medium pacer Mills, who took four for 44, claimed crucial wickets when he caught and bowled Boucher for 40 and had Jacques Kallis [ Images ] caught at long-on for 51.
South Africa escaped ignominy with the help of a gutsy innings by Kallis, who was expected to bat at number three but came in at number five because of a viral infection.
Kallis, South Africa's premier batsman, worked hard for his runs, which he scored off 94 balls with just two fours.
Kallis and Boucher nursed the home side towards respectability with a stand of 62 for the sixth wicket after South Africa had slipped to 120 for five in the 33rd over.
South Africa won the first match of the series by two wickets in Bloemfontein on Sunday.
The third match will be played in Port Elizabeth on Sunday.
G. Smith b Styris 36
A. Puttick b Bond 0
H. Gibbs lbw b Mills 33
S. Pollock c Adams b Styris 0
J. Kallis c Vincent b Mills 51
A. Prince b Vettori 19
M. Boucher c&b Mills 40
J. Kemp not out 8
C. Langeveldt c Adams b Mills 1
M. Ntini b Bond 0
A. Nel not out 4.
Extras: (lb-1, nb-2, w-6) 9
Total: (for 9 wickets, 50 overs) 201
Fall of wickets: 1-3, 2-69, 3-71, 4-74, 5-120, 6-182, 7-188, 8-196, 9-197.
Bowling: K. Mills 10-0-44- 4 (w-2), S. Bond 10-0-42-2 (nb-2, w-2), A. Adams 6-0-39-0, S. Styris 10-1-29-2 (w-), D. Vettori 10-0-31-1 (w-1), N. Astle 4-0-15-0.
S. Fleming c Smith b Ntini 6
N. Astle c Gibbs b Ntini 3
L. Vincent c Prince b Ntini 90
S. Styris c Kemp b Nel 27
C. McMillan c Boucher b Langeveldt 3
J. Oram c Boucher b Kemp 11
B. McCullum st Boucher b Boje 1
D. Vettori c Smith b Boje 0
J. Franklin c Puttick b Langeveldt 21
A. Adams lbw Langeveldt 6
K. Mills not out 2.
Extras: (lb-5, nb-1, w-6) 12
Total: (all out, 47.5 overs) 182
Fall of wickets: 1-7, 2-16, 3-80, 4-93, 5-127, 6-129, 7-137, 8-165, 9-177, 10-182.
Bowling: S. Pollock 7-0-36-0, M. Ntini 10-1-29-3 (w-1), A. Nel 9-1-32-1 (w-3), C. Langeveldt 7.5-3-35-3 (nb-1), J. Kemp 6-0-19-1, N. Boje 8-0-26-2 (w-1).
Result: South Africa won by 19 runs.