If Bangladesh beat Sri Lanka on Tuesday, then the hosts will go through to the final.
India chased down the 330-run victory target in 47.5 overs to register their highest successful run chase ever.
Kohli’s magnificent 183 came off 148 balls and was studded with a six and 22 fours. Kohli fell when he edged a Umar Gul delivery high up in the air for Mohammad Hafeez to take the catch at point.
Rohit Sharma hit a six and 5 fours in his 83-ball 68 before Umar Gul had him caught by Shahid Afridi at deep mid-wicket.
Rohit added 172 runs with Kohli for the third wicket. Kohli reached his maiden score of 150 off 131 balls. Rohit’s 62-ball fifty came with the help of a six and 3 fours. Kohli reached his century off 97 balls.
Kohli’s 11th century, his first against Pakistan, was studded with 11 hits to the fence.
Sachin Tendulkar hit a 48-ball 52 before Saeed Ajmal had him caught by Younis Khan at first slip.
Tendulkar reached his 96th ODI fifty off 45 balls with the help of a six and five fours.
Tendulkar and Kohli put up a 100-run stand off 92 balls after the early dismissal of Gautam Gambhir.
The Indian run chase got off to a bad start as Mohammad Hafeez trapped Gambhir plumb in front of the wicket on the second ball.
Earlier, centuries by openers Nasir Jamshed and Mohammad Hafeez and a 34-ball 52 by Younis Khan powered Pakistan to 329/6.
Younis hit a 34-ball 52 before Suresh Raina took an amazing one-handed catch at short extra cover to dismiss him off Praveen Kumar.
Some brisk hitting by Younis brought up the Pakistan 300 in the 47th over.
Shahid Afridi managed to score 9 runs before Irfan Pathan had him caught by Virat Kohli at deep mid-wicket.
Praveen Kumar gave India the third breakthrough when he had Umar Akmal caught by Gautam Gambhir at short fine leg.
Akmal hit 2 fours in his 24-ball 28 before falling to Praveen.
Pakistan openers Nasir Jamshed and Mohammad Hafeez hit brilliant centuries before falling in successive overs.
R Ashwin broke Pakistan’s 224-run opening stand when he had Nasir Jamshed caught by Irfan Pathan at short third man.
Jamshed, who raced to his maiden ODI century off 98 balls, hit 112 runs off 104 balls and his knock was studded with a six and 10 fours.
Ashok Dinda then struck in the next over when he trapped Hafeez plumb in front of the wicket off a slower delivery.
Hafeez’s 105 came off 113 balls with the help of a six and 9 fours.
Hafeez’s fourth century, his first against India, came off 103 balls.
Hafeez and Jamshed brought up the Pakistan 200 in the 33rd over and the 100-run stand came in the 18th over.
So listless was the Indian bowling that captain MS Dhoni had used seven bowlers in 17 overs, without any success.
The stand came after Pakistan captain Misbah-ul-Haq won the toss and chose to bat.
India made one change in their playing eleven, replacing injured Ravindra Jadeja with Yusuf Pathan, while Pakistan brought Wahab Riaz in place of Sarfraz Ahmed. (Times of India)