As the pitch flattened and the ball deteriorated - but not enough on a lush outfield for reverse swing - the pair built a partnership of substance, upping the run rate from 2.25 at lunch to 3.51 by tea and to 3.66 by stumps.
The wicket of Williamson in the final session, edging down the legside off Khan, slowed progress but momentum had already swung. Corey Anderson only sustained the innings to be unbeaten on 43 with McCullum.
The crowd got value from a catalogue of textbook strokes. The off drives from Williamson (to toast the 100-run partnership off Mohammed Shami) and McCullum (to bring up his half century off Khan) were among the best shots this summer; Williamson's edge for six to bring up his 13th half-century, was among the more fortuitous.
He averages 74.57 his last seven test innings have not scored less than 45. It follows five consecutive one-day internationals half-centuries and a record where he has passed 50 in his last seven innings across all forms of cricket.
The pair had their tricky moments. Williamson was dropped by Murali Vijay at first slip off Mohammed Shami on 32 when the score was 76. McCullum escaped with an edge that bounced in front of first slip off Ishant Sharma an over earlier.
It initially appeared a toss to win on a green wicket. Indian captain MS Dhoni duly inserted New Zealand after making his sixth consecutive correct call this series.
Shami and Khan worked busily in the early stanzas, generating movement on and off the pitch as Hamish Rutherford and Peter Fulton fished about.
Rutherford appeared agitated. He wanted to blast a ball to the boundary and eventually plastered one off Khan on his way to six. Shortly afterwards he was out punching away from his body off Sharma to a diving catch from Ajinkya Rahane in the gully.
It was Sharma's 150th test wicket. Despite being dropped during the ODI series he was the best of the Indian bowlers, generating bounce and seam movement to finish with figures of two for 62 from 21 overs.
Fulton (13) looked strong off his pads but struggled to find rhythm after a couple of near misses. Third slip Shikhar Dhawan spilt a catch poaching across Rohit Sharma from the first ball of the second over. Shami also had a plumb lbw turned down by umpire Richard Kettleborough.
India's bowlers must crave the DRS sometimes; the predictive path showed the ball crashing into the stumps. Khan eventually sneaked a ball through to Fulton's pads on the crease to complete the task.
Taylor looked out of sorts, eventually spooning a length ball from Sharma to Ravindra Jadeja at short cover. His best contribution was sartorially, donning the timeless sleeveless cable sweater which has emerged from retirement as part of team kit.
The biggest disappointment was a crowd of just 5500 turning up on a national holiday in the country's most populated city for arguably the biggest test of the season and the hosts in form. Supposedly cricket's the summer game. This was evidence to the contrary.
SCOREBOARD