Virat Kohli scored a record-breaking 50th one-day international hundred and Mohammed Shami took seven wickets as India beat New Zealand by 70 runs to reach the Cricket World Cup final on Wednesday.

Kohli made 117 to surpass the ODI century record he had shared with India great Sachin Tendulkar, and Shreyas Iyer clubbed a rapid 105 in a commanding total of 397-4.

New Zealand were then dismissed for 327 despite Daryl Michell's 134 with paceman Shami taking a sensational career-best 7-57.

In Sunday's final, India will face either Australia or South Africa who play their semi-final on Thursday.