De Grandhomme and Bruce put on 109 runs for the fourth wicket as the Kiwis chased down their target of 162 with two balls to spare in Kandy and take an unassailable 2-0 lead in the three-match series.
De Grandhomme, who was dropped on 36, completed his fifty before falling to Isuru Udana for 59. He hit two fours and three sixes in his 46-ball blitz.
Bruce, who made the XI in place of injured Ross Taylor, made the most of the opportunity, scoring 53, but was run out at the start of the final over with the team needing seven.
Daryl Mitchell was out next ball and Mitchell Santner was nearly caught near the boundary by Shehan Jayasuriya on the third delivery but the fielder tripped after a collision with his teammate and hit the rope with the ball in hand.
Jayasuriya and Kusal Mendis were injured in the clash that cost Sri Lanka six runs and ended the final-over drama as Santner hit the winning boundary on the fourth ball off Wanindu Hasaranga.
Skipper Lasith Malinga said the two fielders "are alright and will play the next game hopefully".
Earlier New Zealand bowlers led by pacemen Seth Rance and skipper Tim Southee restricted Sri Lanka to 161 for nine to set up the win.
Sri Lankan spinner Akila Dananjaya hurt the opposition chase with his three wickets including two in over as the Black Caps slipped to 38 for three.
New Zealand were also hurt by the absence of opener Martin Guptill who was not available to bat after being injured while fielding.
For Sri Lanka, Avishka Fernando and Niroshan Dickwella put on 68 runs for a crucial third-wicket stand but the rest of the batting did not make an impression.
Rance claimed three wickets while fellow paceman Southee returned impressive figures of 2-18 from his four overs.
The third match will be played in Kandy on Friday.