's second Test century was the centrepiece of a fluctuating opening day at the P Sara Oval, which saw India recover from a troubled start and move to a solid but never dominant position. Rahul and Virat Kohli, who came together after two early strikes from Dhammika Prasad, added 164 for the third wicket before Rohit Sharma built on the platform they erected and scored the third half-century of his stop-start Test career.
Rohit and Wriddhiman Saha put on 52 for the sixth wicket and took India past 300 before Angelo Mathews ended the partnership with what turned out to be the last ball of the day.
Rohit came in at No. 5 - with Ajinkya Rahane taking the No. 3 slot he vacated - and eased his way into form, taking plenty of singles against spread-out fields and hitting only four boundaries in his first 50 runs. The scoring opportunities arrived late in the day, when Sri Lanka took the second new ball as soon as it was due.
Prasad had already sent down 18 overs in the day, in five separate spells, and a sixth one proved too much of an ask. He sent down two long-hops in his first over, which Rohit duly pulled for a six and a four, and another short ball in his next over, which Rohit steered behind point for another boundary.
But just when he looked set to have a good night's rest and resume in sight of a hundred, Mathews dismissed him for the second time in two Tests in exactly the same manner, jagging one back off the seam to strike his front pad as he looked to play around it.
Noting at the toss that "whatever grass we saw two days ago has disappeared", Kohli chose to bat first. Mathews said he would have bowled anyway, expecting the pitch to stay true to its usual self and assist his seamers early on.
Mathews' hunch was proven right, as Prasad found seam movement to strike in the first over of the Test. Having swung two of the first three balls away from M Vijay - only gently, but perceptibly - he got the fourth to nip back in off the seam. Not quite fully forward to defend, Vijay's front pad was right in front of off stump when the ball struck it.
Next to go was Rahane. At his regular No. 5 slot, against an older ball, he may have gotten away with reaching away from his body to drive on the up. Against a new ball that curved away from him, he didn't; the thick edge carried nicely to third slip.
With Mathews taking the new ball from the other end and asking questions of the batsmen - he straightened one from wide of the crease to send it flying off Rahul's edge between gully and point - India were under a fair deal of pressure.
Dushmantha Chameera - in the team because of Nuwan Pradeep's hamstring injury - released some of it when he came on as first change, but only after creating a clear chance in his first over. Rahul went hard at a shortish ball outside off and sliced straight to gully, only for Jehan Mubarak to drop the waist-high chance.
Three fours came off Chameera's first two overs - all from half-volleys driven down the ground or flicked off the pads - and two more in his next two, including a controlled pull from Kohli off a waist-high short ball.
Rahul and Kohli grew increasingly comfortable as the ball lost shine and shape - the umpires called for a replacement after 10 overs - though the odd one still seamed around, as Kohli discovered when Prasad jagged it back into him and struck him on the back thigh. The pitch too lost its early juice and flattened out into an inviting batting strip.
At lunch, Rahul was on 39 and Kohli on 48. Rahul overtook his captain with three fours in the first three overs after the break, the best of them a drive off Prasad between short cover and mid-off. It was the result of a big forward stride and immaculate weight transfer, and it brought up his fifty.
Every now and then, Kohli lapsed into his old tendency of pushing at the ball away from his body, and one such hard-handed jab nearly cost him his wicket against Prasad, in the fifth over after lunch, the edge falling just short of first slip. This came in a phase when he was stuck on 50 for 11 balls: he also popped Prasad off the inside edge and pad into the vacant short leg area in this time.
Having survived that stretch, Kohli grew dominant, clipping Chameera for two fours in an over and drilling Herath with immense bat-speed into a small gap between short extra cover and a deepish cover. With the batsmen growing increasingly dominant and the bowling increasingly ragged, Kohli and Rahul hit seven fours and a six from the 34th to 43rd overs.
Just when Sri Lanka seemed at a loss for ideas, Kohli fell against the run of play. Rahul had late-cut Kaushal to the third man boundary in the previous over, and Kohli tried to play a similar shot off Herath, when the ball wasn't quite short enough for it. Mathews anticipated well at slip, dived across, and snaffled the ball one-handed.
The wicket re-energised Herath, who gave India a few nervous moments before tea with his changes of pace and trajectory. Rohit made the same mistake that got him out in the second innings of the Galle Test, coming forward to defend with his front leg a long way inside the line. The ball popped in the air, off the edge, but there was no silly point and Rohit escaped a second-baller.
Herath then nearly had Rahul, deceiving him in the air as he skipped down the pitch, and forcing him to push his hands at the ball as it dipped and turned away from him. The edge, however, didn't carry to slip.
Aside from that moment, Rahul's eagerness to dance out of his crease had served him well. All the Indian batsmen looked to do just that, against Herath, and Kohli, Rahul and Rohit hit him for a big six each.
Sri Lanka turned to the short ball after tea, with Chameera steaming in from around the stumps, and the tactic brought them Rahul's wicket. Rahul, who had reached his hundred five overs earlier, went for the hook, looking to fetch a shoulder-high ball from outside off stump, and could only spoon a simple catch to the keeper off the top edge.
Stuart Binny, who never looked comfortable at any point during his 40-ball stay, fell while trying to take on Herath as soon as he came back into the attack an hour into the final session. Looking to hit him inside-out, over the covers, Binny only managed to spoon him to long-off.
Karthik Krishnaswamy is a senior sub-editor at ESPNcricinfo