The Black Caps captain made sure the first day day of international cricket at the redeveloped Hagley would be remembered as he raced to his score off 134 balls as part of a team total of 429 for seven.
There were many highlights, but perhaps his stand of 153 for the fifth wicket with Jimmy Neesham was the best, the pair scoring at 7.84 an over while together.
Neesham would make 85 from 80 and Kane Williamson a more considered 54 from 98 as Sri Lanka toiled.
They had looked on song at one point, though, reducing the hosts to 60 for two and 80 for three, but after that it went downhill.
There were some teething problems for the venue, with both opening bowlers losing their footing, but they were quickly amended.
Hamish Rutherford went first for 18, cleaned up by Suranga Lakmal, with Tom Latham then holing out to point for 27.
Ross Taylor followed for seven, run out attempting a quick single, but that brought McCullum to the crease and he set about causing chaos.
Williamson made a watchful 54 in his company before he was bowled by Dhammika Prasad, but by this point all eyes were on McCullum.
Treating the occasion like a Twenty20 game, he broke his own 78-ball New Zealand record for a fastest century in Tests by four balls and continued to swing from the hips.
Neesham did the same at the other end, with the pair both shelled by Kumar Sangakkara.
McCullum was on course for the quickest double hundred in Tests – having gone to 200 in his last outing too – when he holed out to long off when facing Thaurinda Kaushal.
BJ Watling came out and added 26 before going to Angelo Mathews, with Neesham then removed by the visiting captain for 85, with Sangakkara finally taking one.