Kanpur - Sri Lanka were staring at a massive defeat after India's Shanthakumaran Sreesanth grabbed 6-85 on the third day of the second Test on Thursday.
Sreesanth, 26, took the second five-wicket haul of his career to bowl out Sri Lanka for 229 in their first innings and rocked them again in their second knock by dismissing in-form opener Tillakaratne Dilshan (11).
The fast bowler's efforts helped India take a 413-run lead on the first innings and enforce a follow on.
At close, Sri Lanka were reeling on 57-4 in their second innings, trailing India by 356 runs.
India, who amassed 642 in their first innings, need six more Sri Lankan wickets to claim an innings victory and go 1-0 up in the three-Test series. The first match in Ahmedabad ended in a draw.
Thilan Samaraweera was batting on one while Angelo Mathews was on two when stumps were drawn for the day, five overs before scheduled close due to bad light.
Sreesanth, who took three wickets in the morning session, added two more to his tally to return impressive first-innings figures of 5-75 in 22 overs at the Green Park stadium.
Spinners Pragyan Ojha (2-37) and Harbhajan Singh (2-54) wiped off the tail to wrap up the Sri Lankan innings shortly after tea.
India tasted early success again in the second innings when Dilshan edged an outswinger from Sreesanth on 11, failing to make amends for his golden duck in the first knock.
Part-time spinner Virender Sehwag trapped the other opener Tharanga Paranavitana leg before wicket before Mahela Jayawardene and Sri Lankan captain Kumar Sangakkara lost their wickets cheaply.
Mahela was run out while Sangakkara inside-edged onto his stumps off Harbhajan.
Sreesanth earlier broke a fighting 60-run partnership between Mahela (47) and Prasanna Jayawardene to ensure there was no repeat of their heroics at Ahmedabad.
The duo had shared a world-record stand of 351 for the sixth wicket with Mahela making 275 and Prasanna contributing 154.
Prasanna (39) edged Sreesanth to be caught behind the wicket while Mahela became the maiden Test victim of Ojha when he offered a simple catch to Sachin Tendulkar at mid-on.
Sreesanth marked his comeback to international cricket in style, dismissing Sangakkara, Paranavitana and Samaraweera in a fiery starting spell.
Harbhajan chipped in with the wicket of Mathews (13) to have Sri Lanka reeling at 111-4.
Sri Lanka's batsmen resumed the day at 66-1 but failed to build big partnerships, with Sreesanth and his new-ball partner Zaheer Khan troubling them with their line and length.
Sreesanth gave India an early breakthrough when Paranavitana (38) poked at a slightly wide delivery to be caught by a diving Dhoni behind the stumps.
The fast bowler, returning to the Indian squad after playing his last Test 19 months ago at the same venue here against South Africa, struck again four overs later to remove the other overnight batsman, Sangakkara (44).
The third and final Test begins in Mumbai on December 2.