|Dravid was the third Indian batsman to make a century in the innings [AFP]
Rahul Dravid completed his 28th Test century and moved into fourth place on the all-time scorers list as India tightened their grip on the second Test against Sri Lanka in Kanpur.
Dravid made a superb 144 after becoming the third player to score a hundred before India were all out for 642 soon after tea.
Sri Lankan left-arm spinner Rangana Herath triggered a late batting slump, grabbing five wickets by striking either side of the interval on a slow Green Park pitch.
Herath captured five for 121, his fourth five-wicket haul in a Test innings, taking all but one of the last six wickets which tumbled for 29 runs.
Sri Lanka reached 66 for one at stumps after a nightmare start when opener Tillakaratne Dilshan was out on the first ball of the innings after he top-edged a loosener down the leg side from paceman Zaheer Khan to be caught at mid-on.
India first innings (o/n 417-2)
G Gambhir c and b Muralitharan 167
V Sehwag c Dilshan b Muralitharan 131
R Dravid run out 144
S Tendulkar c Samaraweera b Mendis 40
V Laxman c Dilshan b Herath 63
Y Singh c Sangakkara b Mendis 67
M Dhoni b Herath 4
H Singh b Herath 5
Z Khan c P Jayawardene b Herath 1
S Sreesanth lbw b Herath 0
P Ojha not out 1
Total (all out, 154 overs) 642
FoW 1-233 2-370 3-464 4-511 5-613 6-619 7-639 8-641 9-641
Sri Lanka first innings
T Dilshan c Ojha b Khan 0
T Paranavitana not out 30
K Sangakkara not out 30
Total (for 1, 24 overs) 66
Skipper Kumar Sangakkara and opener Tharanga Paranavitana were both 30 not out, holding firm until the end of play.
India drove home the advantage of batting first on winning the toss, building on the overnight centuries from openers Gautam Gambir (167) and Virender Sehwag (131) and their 233-run stand.
Dravid dominated the first session on Wednesday with sublime shots to underline his form after scoring 177 in the drawn first Test in Ahmedabad.
On 85 in India's overnight total of 417 for two, he drove left-arm paceman Chanaka Welegedara for four to reach his 28th Test hundred, moving to ninth overall in the list headed by Sachin Tendulkar, who has 43.
Dravid, who surpassed 11,000 runs in the previous Test, rose to fourth in terms of career aggregate.
Only Tendulkar, retired West Indies batsman Brian Lara and Australian skipper Ricky Ponting are ahead.
Tendulkar was the first to go in the morning.
He shared a 94-run partnership with Dravid and was dropped on 30 against
He hit the leg spinner for six in his next over but ran out of luck two balls later, foxed by a short ball as he stepped out of the crease to be caught at wide mid-off.
Dravid batted beautifully before he was run out in bizarre fashion, backing too far as Herath dropped a return catch from Laxman but deflected the ball onto the stumps at the non-strikers end.
He hit 15 fours and a six in his 226-ball knock.
The 31-year-old Herath, Sri Lanka's in-form spinner, had Laxman caught at wide mid-off after lunch and then bowled skipper Mahendra Singh Dhoni (4) and Harbhajan Singh (5) with angled deliveries which sneaked in between bat and pad.
He mopped up the tail after tea by claiming the last two wickets of Zaheer (1) and Shanthakumaran Sreesanth (0).
Mendis and Muttiah Muralitharan took two wickets each as all the spinners accounted for all the wickets, barring the run out.