Virat Kohli's 50th ODI century and Mohammed Shami's 7/57 helped India beat New Zealand by 70 runs in the semi-final to reach the title clash.