Stand-in captain Rohit Sharma slammed a double century, his third double ton in ODIs as India rocketed to 392 for four in 50 overs.
Earlier, India's captain had reached his century in just 115 balls with nine boundaries and a six as India took control of the second one-day international at Mohali on Wednesday.
Rohit's scintillating double ton was studded with 12 sixes and 13 boundaries in just 153 balls as the Lankan attack wilted at Mohali.
Rohit scored his first ODI double ton against Australia back in November 2, 2013, at the M Chinnaswamy Stadium when he hammered 209.
He notched up yet another double ton a year later on November 13, 2014, at the Eden Gardens in Kolkata where he notched up 264, which happens to be the highest score in by a batsman in an ODI innings
The right-handed batsman crossed the 100-run mark in ODIs for the sixth time this year and first ever as captain.
Shreyas Iyer, who made 88 off 70 balls in his second ODI, batted well alongside Rohit and came up with the big shots just when his team needed to step on the accelerator.
Rohit, who opened the match along with Shikhar Dhawan got the measure of the pitch in the first Powerplay, where they made just 33 runs but started playing their strokes thereafter to take India to 108 for no loss in 20 overs.
Rohit, who is leading the side in Virat Kohli's absence, had promised to bounce back after their humiliating loss in the 1st ODI in Dharamsala.
Sri Lanka has fielded an unchanged side, whereas, for India, Tamil Nadu offspin-bowling allrounder Washington Sundar received his maiden ODI cap, replacing Kuldeep Yadav in the playing XI.