There was a sense of inevitability to it all, particularly to Kohli's innings, which swept him past 1000 runs for 2017 and moved him level with Ricky Ponting in second place among ODI century-makers.
Ponting batted 365 times in ODIs while scoring 30 hundreds; Kohli reached the mark in his 186th innings. It was his 19th hundred in a chase, though perhaps one of the least challenging among them. India were only chasing 239.
They were only chasing 239 because Sri Lanka failed to build on their first century stand of the series - 122 for the fourth wicket between Lahiru Thirimanne and Angelo Mathews. Had they done so, they may have set a target of around 270. Instead, they lost their last seven wickets for 53 runs.
Having left out Hardik Pandya for the first time in 18 ODIs, India chose an extra specialist bowler in his stead. All of them enjoyed a productive afternoon on a slow, used surface barring Shardul Thakur, who went for 38 in a four-over new ball spell and only bowled two more overs.
All that meant India did not have too much of a target between them and a 5-0 whitewash, but they had to chase it down without a genuine allrounder at No. 7, and in less-than-perfect batting conditions. They had scored 375 on the same pitch on Thursday, but it had now morphed into a drier, grippier creature where driving on the up wasn't a straightforward proposition.
They lost both their openers by the eighth over, Ajinkya Rahane top-edging a hook off a sharp, steep bouncer that was a flashback to Lasith Malinga at his prime, and Rohit Sharma failing to get the elevation he desired while looking to scoop Vishwa Fernando over short fine leg. India were 29 for 2, but they happened to have Kohli at the crease in the kind of limited-overs form few batsmen have ever experienced.
Kohli walked to the crease having scored 907 ODI runs in 2017, at an average of 82.45 and a strike rate of 103.65, and every now and then played a shot of a man with those numbers behind him: an exquisitely delayed jab between backward point and short third man, a flat-bat swat to beat long-on to his left and every now and then, one of his pet cover drives.
But the innings, like a lot of his ODI innings, was more about the things he did in between the eye-catching shots. Where he faced 116 balls and only hit nine fours, Kedar Jadhav hit seven in 73, but he only played out 49 dot balls to Jadhav's 40. They're just different players, and their styles melded beautifully in a fourth-wicket stand of 109, but Kohli's method, which he has honed into an endlessly repeatable template, is the backbone of his consistency.
Without Pandya in the line-up, the onus was on Manish Pandey and Jadhav to deliver, and both did, in their respective ways. Pandey, almost all bottom-hand, top-edged a sweep on 36 after partnering Kohli in a third-wicket stand of 99, the two soaking up a period of pressure exerted by Akila Dananjaya and Malinda Pushpakumara, who both got the odd ball to turn sharply. Then Jadhav came in and shut the door on Sri Lanka with a breezy 63 full of sweeps and pulls, before top-edging an attempted late-cut when India only needed two more to win.
Having won the toss upon his return from a two-match over-rate suspension, Upul Tharanga proceeded to belie the slowness of the pitch, using his gifts of eye and timing to clatter nine fours in a 34-ball 48. Thakur, only playing his second ODI, bore the brunt of his punishment, pitching too full in the search for swing and occasionally dropping short as well.
In that time, however, Niroshan Dickwella and Dilshan Munaweera fell cheaply at the other end, both batsmen driving too early at Bhuvneshwar's knuckle ball. Bhuvneshwar's control and changes of pace kept Sri Lanka from running away against the new ball, and India were right on top when Jasprit Bumrah got one to nip away from Tharanga off the seam to have him caught behind in the 10th over.
Sri Lanka, however, were going at over a run-a-ball at that point, thanks to Tharanga's innings, and that early momentum allowed Thirimanne and Mathews the time to play themselves in. Virat Kohli introduced spin early, bringing Kuldeep Yadav on in the 11th over, partnering him with Jadhav in the 18th, and calling up Yuzvendra Chahal in the 22nd.
Between them, the three spinners went on to bowl 24 overs and conceded only five boundaries between them while picking up two wickets. Driving and lofting were tricky propositions on this pitch, and Thirimanne and Mathews did not - and could not, given the situation Sri Lanka were in - take too many risks. But they put their experience to use, and swept, nurdled and check-drove their team towards a platform to launch a late assault from.
Both had brought up their fifties when Bhuvneshwar returned to bowl the 39th over with Sri Lanka 181 for 3. He struck immediately, going around the wicket to cramp Thirimanne and forcing him to play on while trying to guide one to third man. Then Kuldeep, returning to the attack in the 42nd over, took out Mathews with the first ball of his new spell, sending down a wrong'un that caught the leading edge of an attempted lap-sweep.
At the crease were two batsmen with 5 and 0 against their names, and Sri Lanka had it all to do, all over again. The inexperience of their lower order came under the spotlight, and they duly crumbled. Wanindu Hasaranga fell to a self-inflicted run-out, Akila Dananjaya stepped out and missed the line of a topspinner, leaving MS Dhoni to complete his 100th ODI stumping, and both Milinda Siriwardana and Malinda Pushpakumara fell to full-tosses from the fast bowlers. Then Lasith Malinga holed out to Bhuvneshwar, and Sri Lanka had folded two balls short of lasting 50 overs.