McCullum struck a historic 302, while BJ Watling made 124 and debutant James Neesham scored an unbeaten 137 as New Zealand declared their second innings at 680 for eight, giving India an improbable 435 runs to chase in little over two sessions of play.
India overcame some anxious moments before finishing at 166 for three in 52 overs as the two captains decided to call off the proceedings with no result in sight.
Virat Kohli smashed his sixth Test century and remained unbeaten on 105, while Rohit Sharma was not out on 31.
It turned out to be a disastrous tour for India as they remained winless, losing the ODI series 0-4 and the Test series 0-1 following their 40-run loss in the first Test at Auckland.
India looked like winning the this Test match after reducing New Zealand to 94 for five in their second innings but McCullum staged a remarkable fightback, and together with Watling shared a world record partnership of 352 runs for the sixth wicket to take the hosts to safety.
After Watling’s departure, McCullum stitched another crucial 179-run stand with Neesham for the seventh wicket to take the match beyond India’s reach.
McCullum’s 302 runs overtook Martin Crowe’s 299 scored against Sri Lanka, also at the same ground, in 1991 to become highest individual Test scorer for New Zealand.
It was also the third-highest innings by a number five batsman in Test cricket after Michael Clarke’s 329 not out against India in 2012 and Sir Don Bradman’s 304 against England in 1934.
McCullum’s effort is also the second-highest individual score in the second innings after Hanif Mohammad’s 337 against West Indies in 1958. Overall he is the 24th Test batsman to hit a triple-hundred, while this is the 28th instance of a triple-hundred being scored.
Chasing an impossible 435-run target, India lost their top three batsmen in the post-lunch session at the Basin Reserve.
But Kohli stood tall and scored 105 unbeaten runs off just 135 balls with the help of 15 fours and one six to steady India’s ship after they were reduced to 54 for three.
Kohli reached his century in the 49th over of the innings off 129 balls. He made good use of the life he was given in the 13th over in the post-lunch session at the personal score of 23 when umpire Steve Davis failed to judge an edge off Trent Boult.
Kohli and Rohit put on an unbeaten 112 runs for the fourth-wicket partnership to deny New Zealand any further inroads.
In the morning session, New Zealand rode on McCullum’s historic 302 and debutant James Neesham’s unbeaten 137 to declare their second innings at 680 for eight in 210 overs with an overall lead of 434 runs.
Starting at 10 for no loss post-lunch, India had the simple task of batting out two sessions to save the Test. But as has been the story in this tour so far wherein they haven’t managed to win a single game, the visitors botched it up.