You are not permitted to download, save or email this image. Visit image gallery to purchase the image.
To retain any hope of qualifying for the best-of-three finals against an already qualified Australia, India needed to reach their target in 40 of the 50 overs allocated to earn a bonus point victory.
India now require hosts Australia to beat Sri Lanka in the last group match in Melbourne on Friday to stay ahead of Sri Lanka on points.
"I will be rooting for Australia on Friday. This is a special feeling, and this is probably my best one-day innings so far," Kohli said during a pitch-side interview.
"To be able to execute everything I wanted in that situation is really very satisfying."
Kohli, 23, hit 16 boundaries and two sixes in his 86-ball knock as the 50-over world champions reached 321 for three wickets in 36.4 overs.
The right-hander added 115 runs for the third wicket with Gautam Gambhir (63) and then stitched together 120 runs with Suresh Raina (40 not out) for the unbroken fourth wicket to ensure India won with a bonus point.
Openers Virender Sehwag (30) and Sachin Tendulkar (39), who once again failed in his bid to score his 100th international ton, provided a brisk start for India but it was left to Kohli to guide the team to victory.
The Delhi batsman displayed some sublime strokeplay and was particularly severe on paceman Lasith Malinga (one for 96), whom he hit for 24 runs in an over, including a six and four boundaries in consecutive deliveries.
"I committed a few mistakes in the last games. I was hitting the ball pretty well until I was getting to 20. I was trying to middle every ball, which is not possible in international cricket," Kohli said.
"I told myself to just play myself in, and stick in there no matter what... and it paid off.
"I have the self-belief that if you keep working hard and keep the mind in the game and stay positive and get in the face of the opposition, results are going to come."
Earlier, centuries from Tillakaratne Dilshan and Kumar Sangakkara powered Sri Lanka to 320 for four.
Dilshan (160 not out) equalled his highest score in one-day internationals and added 200 for the second wicket with Sangakkara (105) after India captain Mahendra Singh Dhoni opted to field after winning the toss.
Sangakkara was the more attacking of the duo and his 13th one-day hundred was studded with eight boundaries and two sixes, coming off 87 balls.
Dilshan was watchful at the start but opened up after completing his 11th hundred. He hit 11 boundaries and three sixes during his 165-ball stay at the wicket.
The Indian bowlers looked listless and erred in both line and length, making it easier for the two former Sri Lanka captains to prosper at the crease.