The dramatic finale made it seventh-time lucky for the Kiwis after six previous semi-final defeats – but piled further agony on South Africa as Johannesburg-born Elliott condemned them to a fourth semi-final defeat.

New Zealand – who will face either four-time winners Australia or holders India in the final in Melbourne on Sunday – were urged on by a 40,000-strong crowd during a pulsating match at Eden Park.

South Africa batted first and made a daunting total of 281-5 in a rain-affected match which was eventually reduced from 50 to 43 overs a side. That meant the Kiwis had to chase a revised total of 298 under the Duckworth-Lewis method. With two balls left the Kiwis were still five runs adrift of that target as Elliott faced Dale Steyn – arguably the world’s finest bowler.

But the 36-year-old rose to the occasion as he smashed Steyn high over wide long-off to take the Kiwis to a winning total of 299-6 with a solitary ball to spare. Elliott – known as ‘the Hairy Javelin’ – finished unbeaten on 84 from 73 balls, including seven fours and three sixes.

Skipper Brendon McCullum had got the Kiwis’ run chase under way by smashing 59 from 26 balls, and Cory Anderson made a vital 58. Yet South Africa had earlier looked to be in a strong position as Faf du Plessis made 82, skipper AB de Villiers an unbeaten 65 and David Miller a whirlwind 49 off 18 balls.

New Zealand were under pressure throughout their innings – but were thrown a vital lifeline in the penultimate over when Farhaan Behardien and JP Duminy collided on the boundary as they converged on a skied shot from Elliott. Minutes later he made them pay the ultimate price for their error as New Zealand stormed into the final.