India reached 307 for one at tea with Sehwag blasting 131 off 122 balls and Gambhir
stroking an unbeaten 140. Giving the left hander company was Rahul Dravid on 32.
Deciding to bat, India were off to an explosive start through Sehwag and Gambhir, who added 233 runs in 41.2 overs, scoring close to six runs per over.
After Sehwags dismissal, Dravid, who dug India out of trouble in the first Test at Ahmedabad with a counter-attacking 177, played freely, stroking three fours while Gambhir looked set for a bigger innings after scoring back-to-back centuries, his seventh ton in nine Tests.
Sehwag, whose whirlwind 122-ball knock included 18 fours and two sixes, broke the shackles in the second hour of the morning session, playing with his belligerent style and clobbering the spinners at will.
India raced to 131 at lunch with Sehwag in ominous touch.
Sri Lanka went into the match with three spinners and included Ajantha Mendis in place of injured pacer Dammika Prasad. But it appears to have backfired as the two Indian openers attacked the slower bowlers right from the onset of spin in the 16th over.
Mendis was punished the most — 42 runs in five overs before lunch and Muralitharan bore the burnt in the second session, giving away 73 runs in 12 overs.
Most of those runs flowed from the blade of Sehwag, who looked set to make Sri Lanka bleed for dropping him in the fourth ball of the innings off Chanaka Welegedera. First slip Mahela Jayawerdene, distracted by a diving wicketkeeper Prasanna Jayawerdene, lost the ball from his hands.
Young left-arm seamer Welegedera, who rocked the Indian top order in the first innings of the drawn Ahmedabad Test, troubled Sehwag with his swinging deliveries in the first hour. But there was not much bounce and pace in the wicket to assist the faster bowlers.
Sehwag immediately went into the defensive, tackling the initial overs from Welegedera and Anjelo Mathews without taking any risk while Gambhir steered the innings, stroking some sweetly timed fours.
Sehwag then took control after drinks and the duo blasted 92 runs in the next 14 overs.
They continued in the same vein after lunch, hitting Welegedera for three fours in the first over after lunch break.
Sehwag picked up spin king Muralitharan for some special treatment, bringing up his 16th Test century in just 98 balls with 13 fours and two sixes.
Muralitharan, however, got his wicket when Sehwag drove through the cover but was caught by Tillakaratne D