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 no), 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.
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.
More From This Section
Dhoni's 65th ODI half-century effort saw him face 86 balls, hitting four boundaries and a six off left-arm spinner Milinda Siriwardana.
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.
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 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.
His 72-run stand for the third wicket alongsiside 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).
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.
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.
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 Dananjay (2) and Milinda Siriwardana (29) following him to the pavilion shortly thereafter, both bowled by Bumrah on either side of a short rain break.