Chasing a competitive 252, India were struggling at 60/3 at one point of time. But Kohli, in his best form, rescued his side and partnered well along with southpaw Suresh Raina to snatch a fantastic win from the hosts with seven overs to spare, giving visitors invincible 3-0 lead in the series. Kohli made an unbeaten 128 while Raina remained not out after scoring 58.
Earlier, part-timer Manoj Tiwary grabbed four wickets to help India restrict Sri Lanka to a modarate total. The leg-spinner, playing his first match of the series, finished with 4-61 off 10 overs to boost his team's hopes of clinching the five-match series. India currently lead 2-1.
Opener Upul Tharanga (51), Lahiru Thirimanne (47) and Tillakaratne Dilshan (42) were the main scorers for Sri Lanka, who were comfortably placed at 152-2 in the 32nd over. Indian off-spinner Ravichandran Ashwin took two wickets and part-time spinner Virender Sehwag one in the day-night match.
Sri Lanka made an impressive start after electing to bat, with Tharanga and Dilshan adding 91 for the opening wicket. Fast bowler Ashok Dinda broke the stand when he removed Dilshan, who was caught behind after cracking seven fours in his 48-ball knock.
Tharanga, who pulled Dinda for the first six of the match, fell soon after completing his half-century, stumped by skipper Mahendra Singh Dhoni off Ashwin. He also hit four boundaries in his 73-ball knock. Dinesh Chandimal (28) and Thirimanne put on 50 for the third wicket before Tiwary struck in his opening over, having Chandimal caught by Irfan Pathan at square-leg.
Off-spinner Sehwag got a big wicket when he had skipper Mahela Jayawardene caught behind for three to reduce Sri Lanka to 155-4. Sri Lanka made two changes from the side which lost the last match by five wickets, bringing in Thirimanne and debutant paceman Nuwan Pradeep in place of injured Kumar Sangakkara and Isuru Udana. India replaced leg-spinner Rahul Sharma with Tiwary.
U Tharanga st Dhoni b Ashwin 51
T Dilshan c Dhoni b Dinda 42
L Thirimanne b Ashwin 47
D Chandimal c Pathan b Tiwary 28
M Jayawardene c Dhoni b Sehwag 3
A Mathews c Kohli b Tiwary 14
J Mendis b Tiwary 17
T Perera c Raina b Tiwary 2
R Herath not out 17
L Malinga not out 15
Extras: (lb2, w13) 15
Total: (for eight wkts; 50 overs) 251
FOW: 1-91, 2-102, 3-152, 4-155, 5-190, 6-213, 7-218, 8-219
Bowling: Zaheer 6-0-36-0 (w3), Pathan 6-0-27-0 (w1), Dinda 6-0-28-1 (w2), Kohli 2-0-7-0, Sehwag 8-1-38-1 (w1), Ashwin 10-0-46-2, Tiwary 10-1-61-4 (w6), Sharma 2-0-6-0.
G Gambhir b Malinga 0
V Sehwagc Senanayake b Mathews 34
V Kohli not out 128
RG Sharma lbw b Pradeep 4
MK Tiwary lbw b Mendis 21
SK Raina not out 58
Extras: (lb2, w6, nb2) 10
Total: (for 4 wkts; 42.2 overs) 255
FOW: 1-0, 2-52, 3-60, 4-109
Bowling: SL Malinga 8-1-41-1 (2w). Perera 6-0-51-0 (1w), AD Mathews 6-1-18-1, N Pradeep 8-0-52-1 (2nb, 1w), Herath 7-0-44-0, Mendis 6-0-37-1, Dilshan 1.2-0-10-0
Toss: Sri Lanka
Umpires: Kumar Dharmasena (SRI) and Bruce Oxenford (AUS)
TV umpire: Tyron Wijewardene (SRI)
Match referee: Chris Broad (ENG)