Kumar Sangakkara and Dinesh Chandimal completed brilliant centuries as Sri Lanka recovered from 69-4 to take a first-innings lead in the second Test against Bangladesh.
The pair put on 195 before their partnership was broken up, as the hosts reached 294-6 by stumps on day two in Colombo, in response to Bangladesh's 240.
Sangakkara finished the day unbeaten on 127, with Chandimal having gone for 102.
With 14 wickets having fallen for little more than 300 runs at one stage, the match was in sharp contrast to the opening run-laden stalemate, but Sangakkara kept up his astounding record against Bangladesh and Chandimal extended his fine run of form.
Dimuth Karunaratne fell early in the morning session, caught behind attempting to cut in a replica of opening partner Tillakaratne Dilshan's dismissal the previous night.
Lahiru Thirimanne failed to trouble the scorers before Robiul Islam, who removed Dilshan in the first over of the innings, drew him into an edge that gave wicketkeeper Mushfiqur Rahim his third catch.
And when captain Angelo Mathews nicked Sohag Gazi to slip to depart for 16, Sri Lanka were in some trouble. Sangakkara was on 29 at that stage but made Rubel Hossain pay for two loose leg-side deliveries, whipping him away for four and then two.
He was 38 not out at lunch, with Chandimal on three, and the pair batted through the second session to bring their side firmly back into the game.
Three in a row
Both batsmen were then effortlessly into their stride in the evening session, with a Sangakkara boundary moving their partnership past 150. It also took Sangakkara within one run of his third consecutive Test ton, which he completed with a drive for two off his 215th ball having hit eight fours.
Chandimal moved to 90 with two boundaries in an over and followed his partner to three figures with a three off Mahmudullah, having faced 169 balls and also hit eight fours.
But he could not add to his 102 runs before Rubel clipped his off stump to dismiss him for the first time in his last three Test innings, which have brought him 280 runs.
Kithuruwan Vithanage made just 12 but Sangakkara remained there at the close and currently averages 89.28 in 13 innings against the Tigers. This was his fifth century, which have including two unbeaten doubles, and he has five fifties on top of that.
Bangladesh will anxiously await updates on the fitness of Robiul, who did not bowl after tea due to severe cramp.