His whirlwind 195 runs off 134 deliveries included 11 sixes and 18 fours and came after he lost the toss and New Zealand were made to bat on a green wicket that bore all the hallmarks of a bowler’s paradise.
McCullum, who admitted he desperately wanted to win the toss to bowl first, instead destroyed the Sri Lankan attack with the bat as he stood in century partnerships with Kane Williamson and Jimmy Neesham.
Neesham was undone for 85, Williamson for 54.
As McCullum bludgeoned the bowling, he cracked the fastest century in New Zealand Test history and became the first New Zealander to score 1,000 runs in a calendar year.
He equalled the New Zealand record of 26 off one over, when he smashed three sixes and two fours off one over by Sri Lanka strike bowler Suranga Lakmal, and finished with 11 sixes, one short of the world record of 12 sixes in an innings held by Pakistan’s Wasim Akram.
It was a colossal captain’s knock which began with Sri Lanka skipper Angelo Mathews feeling satisfied with New Zealand at 88-3 when Ross Taylor was run out in the first over after lunch.
The Sri Lankan optimism quickly evaporated as McCullum took just 74 deliveries to reach his 11th Test century, eclipsing his own 78-ball record set against Pakistan in Sharjah last month.
He had a scare on 153 when Kumar Sangakkara missed a straight-forward opportunity at long on, before he was eventually undone when he launched into off-spinner Tharindu Kaushal.
He hit a six, two and four off consecutive balls off the Test debutant before getting too far under the fourth delivery and was caught by a diving Dimuth Karunaratne at long-off.
New Zealand had made a cautious start to the Test with openers Tom Latham and Hamish Rutherford benefiting from wayward bowling by Sri Lanka quicks Lakmal and Eranga.
But when the bowlers changed ends they made amends.
Lakmal bowled Rutherford for 18 and Eranga had Latham caught at point by Kaushal for 27.
New Zealand’s senior batsman Ross Taylor was run out on seven when he slipped trying to return to his crease after an aborted single attempt in the first over after lunch.
Williamson, who had a life on 39 when Lakmal spilled a comfortable caught and bowled chance, was bowled by Dhammika Prasad for 54 while Neesham reached 85 before he was caught in slips by Sangakkara off Mathews.
Mathews took the new ball for the last over of the day and had BJ Watling lbw for 26 leaving Mark Craig unbeaten on five.
For Sri Lanka, Mathews has two for 34 while Lakmal, Eranga, Prasad and Kaushal have a wicket each. (AFP)