India lead by 339 runs against New Zealand with 2 wickets remaining.
Rohit Sharma's masterful 82 and a seventh-wicket stand of 103 runs with Wriddhiman Saha put India firmly in the driver's seat against New Zealand in the second test on Sunday after the hosts' second innings had got off to a wobbly start.
At stumps on the third day, Saha (39 not out) and Bhuvneshwar Kumar (eight) were at the crease for the hosts, who lead the three-match series 1-0 and will reclaim top spot in the test rankings from Pakistan with a win at EdenGardens.
India reached 227 for eight in their second innings for an overall lead of 339, a tall chase already for the touring side on a deteriorating pitch.
Matt Henry and Trent Boult had seemingly resurrected New Zealand's hopes in the second session with some inspired fast bowling after India wrapped up the touring side's first innings for 204 in the morning for a handy lead.
Henry, who picked up three wickets in India's first innings, added another three to his tally, with Boult picking up two more as India were reduced to 106 for six.
India opener Murali Vijay (seven) fell to Henry in the first over after lunch, while the right-arm fast bowler returned in his next to claim the wicket of Cheteshwar Pujara (four), India's top scorer in the first innings with 87.
Shikhar Dhawan (17), who survived a brutal opening spell before lunch from Boult when he was twice struck on his left hand, was out leg before to the left-arm paceman.
Ajinkya Rahane (one) did not last long either, reducing India to 43-4, and it was left to captain Virat Kohli (45) and Rohit to rescue India with a fifth-wicket stand of 48.
Kohli looked in good touch before he was out leg before to a Boult delivery that stayed low and went under his bat.
Ravichandran Ashwin (five) was also out leg before to left-arm spinner Mitchell Santner, who later sent back Rohit and Ravindra Jadeja (six) in one over.
Ashwin's dismissal brought Rohit and Saha together and the duo then batted India into a commanding position.
Earlier, resuming on 128-7, New Zealand's Jeetan Patel (47) and BJ Watling (25) compiled a fighting eighth-wicket stand of 60 before the former fell trying to slog off-spinner Ashwin's first ball of the day.
Patel, who had played his last test in January 2013, hit nine fours in his run-a-ball innings and, with wicketkeeper-batsman Watling, kept India at bay for more than an hour in the first session while compiling his best score.
The 36-year-old was given out leg before against Jadeja on 47 but was reprieved after replays showed the left-arm spinner had overstepped.
With his maiden fifty one hit away, Patel, whose 47 was New Zealand's highest individual score in the innings, decided to go for a boundary on a flighted delivery from Ashwin but only managed a top edge that was caught by Mohammed Shami.