New Zealand welcomed back fast bowler Shane Bond and pace bowling all-rounder Jacob Oram who missed Friday's 215-run defeat by Australia, the Black Caps heaviest one-day internationals loss, from illness and a left heel injury respectively.
Off-spinner Jeetan Patel retained his place.
Sri Lanka's unorthodox fast bowler Lasith Malinga returned to the team after three games out with ankle ligament damage and Dilhara Fernando also returned after missing the team's last match, an eight-wicket thrashing of minnows Ireland, with an ankle problem.
Under-pressure opening batsman Upul Tharanga retained his place, seeing off the challenge of the experienced Marvan Atapattu.
When the teams met in a Super Eights match in Grenada on April 12, Sri Lanka won by six wickets.
Sri Lanka won the World Cup in 1996.
New Zealand have never played in a World Cup final although this was their fifth semi-final appearance.
The victors in this match will play the winners of Wednesday's second semi-final in St Lucia, between reigning champions Australia and South Africa, in Saturday's final in Barbados.
New Zealand: Stephen Fleming (capt), Peter Fulton, Ross Taylor, Scott Styris, Craig McMillan, Jacob Oram, Brendon McCullum (wk), Daniel Vettori, James Franklin, Shane Bond and Jeetan Patel. Coach: John Bracewell.
Sri Lanka: Upul Tharanga, Sanath Jayasuriya, Kumar Sangakkara (wk), Mahela Jaywardene (capt), Chamara Silva, Tillakaratne Dilshan, Russel Arnold, Chaminda Vaas, Lasith Malinga, Muttiah Muralitharan and Dilhara Fernando. Coach: Tom Moody.
Umpires: Rudi Koertzen (RSA), Simon Taufel (Aus) and Daryl Harper (Aus).
Match Referee: Mike Procter (RSA).