Rohit Sharma once again showed his class in the limited overs format with a stylish unbeaten 124 as India took an unassailable 3-0 lead with a six-wicket victory in the third ODI, which was marred by unruly crowd behaviour. Sensing another meek surrender from the home team, the crowd went berserk as they started throwing water bottles at the end of the 44th over, forcing a 35-minute stoppage.
Rohit was assisted by former skipper Mahendra Singh Dhoni (67 not out), who again played the second fiddle to perfection in an unbroken 157-run stand with India reaching the victory target of 218 in 45.1 overs.
It was the seventh successive bilateral series victory against Sri Lanka. India last lost an ODI series to the island nation in 1997.
India's batting depth came to the fore for the second successive time after form-man Shikhar Dhawan (5), skipper Virat Kohli (3), KL Rahul (17) and Kedar Jadhav (0) were back in the pavilion.
However, Rohit did not gift his wicket away like the previous ODI as he played an innings contrary to his attacking nature of batsmanship. He faced 145 balls, hitting 16 boundaries and two huge sixes.
Dhoni's 65th ODI half-century effort saw him face 86 balls, hitting four boundaries and a six off left-arm spinner Milinda Siriwardana.
For Rohit, who hit his 12th ODI hundred, it was business as usual despite wickets falling at the other end. He peppered the off-side field with regularity hitting some lovely drives and cuts. When Vishwa Fernando dug one short, he was in a perfect position to hook it for a six.
Dhoni, as usual, run his singles well, giving Rohit bulk of the strike and bringing in the necessary calm that is always expected of him.
While Akila Dananjaya (2/38 in 10 overs) again had an impressive outing, the Indian pair decided to not take any undue risks against the mystery spinner.
Rohit on his part was decided to step out and disturb the length of the spinners, something that Rahul and Jadhav did not do during their brief stay at the wicket.
Sri Lanka will now have to win their last two games in order to remain in contention for an automatic qualification.
Earlier, pacer Jasprit Bumrah took his maiden five-wicket haul, enabling India to restrict a struggling Sri Lanka to 217 for nine after Kohli lost the toss for the first time.
Bumrah was brilliant both upfront and in the death overs to end with figures of five for 27, surpassing his previous best of four for 22.
Sri Lanka, trailing 0-2 in the series, once again put up an ordinary show with the bat, barring a gritty 80 off 105 balls from Lahiru Thirimanne.
His 72-run stand for the third wicket alongside Dinesh Chandimal (36) was the lone bright spot in the innings after stand-in-captain Chamara Kapugedera opted to bat.
The hosts made two changes with Thirimanne and Chandimal coming in place of the injured Danushka Gunathilaka and suspended Upul Tharanga. India, expectedly, didn't make any changes.
After winning the toss for the first time in the series, Lanka surprisingly sent Chandimal to open with Niroshan Dickwella (13).
The former had only opened twice in his ODI career before, back in 2012 against New Zealand, and he watchfully added 18 runs for the opening wicket.
Dickwella survived an LBW via DRS in the fourth over, but four balls later Bumrah got his man, in the same manner, LBW via DRS again.
Due to Dickwella's dismissal, Lanka didn't make a flying start and were reduced to 28 for two in the eighth over, with Kusal Mendis (1) caught at second slip. Rohit Sharma took a great diving catch to his right, plucking his 100th catch in international cricket.
Chandimal and Thirimanne then calmed things down and put on a solid partnership in the middle overs for a change. They didn't score quickly though, as Lanka only reached 37 for two in the first ten overs.
Later they brought up their 50-stand off 72 balls as Sri Lanka crossed the 100-mark in the 26th over. Chandimal was hit on his right thumb fending a short delivery off Hardik Pandya (1/42) in the 17th over, and that incident partly hampered his ability to shift gears.
Looking for some attacking shots, Chandimal then holed out in the deep off Pandya in the 26th over itself.
India had a poor day in the field with a lot of missed chances and barring Rohit's attempt, they looked far from a great fielding unit.
Thirimanne used this to his advantage and reached his 17th ODI half-century off 69 balls, inclusive of four fours. In total, he collected five fours and a six.
He put on 38 runs for the fourth wicket with Angelo Mathews (11), as they looked to up the scoring rate against the spinners with Axar Patel (1/35) bowling a tight spell.
Kedar Jadhav (1/12) then got the breakthrough, tapping Mathews LBW in the 35th over. The big blow came when five overs later Thirimanne was caught at midwicket off Bumrah off a slower ball.
Sri Lanka were reduced to 181 for six in the 44th over with Patel bowling Kapugedara (14) as the lower order failed to kick on once again.
It was a familiar story with Akila Dananjaya (2) and Milinda Siriwardana (29) following him to the pavilion shortly thereafter, both bowled by Bumrah on either side of a short rain break.