The Indians were pushed hard in the first two sessions but roared back in the final session to be 227/8 at stumps, which were again drawn early at 63.2 overs owing to bad light.
Wriddhiman Saha (39) and Bhuvneshwar Kumar (8) were at the crease when play ended for the day.
Despite the patchy batting performance, the hosts look set to go 2-0 up in the three-match series, a result that would also propel them to the top of the ICC Test rankings.
The struggle on the difficult-to-negotiate Eden Gardens track, however, was not exclusive to the New Zealanders and the hosts too found the going tough.
More From This Section
The in-form duo of pacer Matt Henry (3/44) and Mitchell Santner (3/51) continued to deliver for New Zealand, especially in the post-lunch session before Virat Kohli's men gathered themselves in the final session.
Reduced to 91/5, the home team was rescued by Rohit and Saha, who had scored an unbeaten half-century in the first innings as well. The two put on 103 run off 179 deliveries to steer India out of trouble.
Among the top half, Kohli, who has been struggling for some time, produced a fine 65-ball 45, including 7 fours, to announce his return to form before being trapped LBW by Boult off a delivery that kept low because of the unpredictable bounce.
(REOPENS DEL 30)
Rohit made his intentions clear by hitting Jeetan Patel for a six over midwicket early in his innings, and when Trent Boult (2/28) was making the ball talk bowling at shoulder height, the Indian counter-attacked with a pull over square leg boundary.
Earlier, in reply to India's 316 in the first innings, New Zealand were bundled out for 204 in 53 overs in the first one and half hour's play.
Playing his first Test after more than three years, No.9 Patel, who was flown in from England to replace an injured Mark Craig, was the top-scorer for New Zealand with his 47 in a 60-run partnership with BJ Watling (25).
Patel's career-best score took New Zealand past the 200-mark. Senior off-spinner Ravichandran Ashwin gave India the first breakthrough of the day in his first over.
Patel struck three boundaries in one Ravindra Jadeja and survived an LBW decision after the India spinner was found to have overstepped.
But Ashwin denied him his first International half-century and dismissed Patel when he skied one catch to Shami while trying to clear mid-on.
Mohammed Shami (3/70) then dismissed Watling (25) and Neil Wagner (10) in successive overs to wrap up the tail giving India a 112-run first innings lead.
India's pace duo of Bhuvneshwar Kumar (5/48) and Shami accounted for eight wickets, while spinners Jadeja and Ashwin took one each.