Trailing India by 246 runs on the first innings, New Zealand was 94-5 and staring at likely defeat when McCullum and Watling came together four overs after lunch. They stayed together for the next 259 minutes and 373 balls, adding 158 runs before stumps.
McCullum was 114 and Watling 52 at the end of the day, taking New Zealand to 252-5 _ a lead of 6 runs.
New Zealand leads the two-test series 1-0 after winning the first match at Auckland by 40 runs.
McCullum was twice dropped early in his innings and seized on both reprieves to become only the fourth New Zealander to reach 5,000 runs in tests, after Stephen Fleming, Martin Crowe and John Wright. He reached the mark with his 81st run.
McCullum took 214 minutes and 146 balls to reach a half century, but as his partnership with Watling gained momentum, he scored more freely and added his second half century in 84 minutes from 53 balls. He reached his ninth test century with a six off Ishant Sharma.
"We had a test match to try and save,'' he said. "At 5-94 things weren't looking so good, but thankfully BJ and I put together a partnership which remains undefeated at the end of the day."
"If we can put ourselves in a good position later on tomorrow, who knows what we can achieve''
Watling came into the match lacking form and low on confidence _ he made just 1 and 11 in the first test at Eden Park and a duck in the first innings of the second test at the Basin Reserve.
But he batted doggedly on Sunday, getting his half century in 230 minutes off 192 balls, with only four fours.
Zaheer Khan (3-60) put India in good position for an innings victory when he claimed two wickets during the morning session. The veteran paceman had dismissed Peter Fulton (1) late on the second day to send New Zealand to stumps at 24-1. He then removed Kane Williamson (7) and Hamish Rutherford (35), both caught by wicketkeeper MS Dhoni, to leave New Zealand 87-4 at lunch.
Tom Latham, who made a duck in the first innings in his test debut, guided New Zealand back into the match, batting a steady 111 minutes for 29 before he was dismissed before lunch.
But Corey Anderson (2) then fell, caught and bowled, to Ravindra Jadeja shortly after lunch, and New Zealand, at 94-5, seemed to have little chance of making India bat again.
That's when the partnership of McCullum and Watling took over.
"As captain ... you've got to try to work your game to the situation and I was just pleased to be able to get through to the end of the day and make sure we're still only five down,'' McCullum said. ``We've got a lot more ground to cover tomorrow.''