Abdullah Shafique and Shan Masood smashed half-centuries to help Pakistan take the opening day honours after they bundled out Sri Lanka for 166 in the second Test.
Pakistan, who lead the two-match series 1-0, reached 145-2 at stumps, trailing Sri Lanka by 21 runs in Colombo.
Shafique (74*) and captain Babar Azam (8*) were at the crease when bad light stopped play for the day.
Shafique put on a second-wicket stand of 108 with the left-handed Masood (51) to put Sri Lanka on the back foot with their attacking play.
The bowlers set up Pakistan’s dominance after leg-spinner Abrar Ahmed and fast bowler Naseem Shah shared seven wickets between them to dismiss the hosts in the second session.
In reply, Imam-ul-Haq fell early for six, but Shafique and Masood hit back with a steady flow of boundaries as Pakistan went about with nearly six runs an over for a large part of their innings so far.
Shafique, who was dropped by Prabath Jayasuriya on 42 off his own bowling, reached his fifty with a majestic six off the same bowler.
Masood raised his fifty off 44 balls, but soon departed as fast bowler Asitha Fernando got his second wicket with Kusal Mendis taking a sharp diving catch at mid-wicket.
Shafique, who survived a close lbw call on 74, stood firm and along with Azam saw the rest of the day through as they went past Sri Lanka’s first-innings total.
Earlier, Pakistan wrapped up the Sri Lankan innings in 48.4 overs after the hosts elected to bat first.
Sri Lanka were in early trouble at 36-4 after play started 30 minutes late due to overnight and early morning rain.
Dhananjaya De Silva, who made 122 and 82 in Sri Lanka’s first Test loss, attempted to hit back in a quick-fire knock. He shared a fifth-wicket stand of 85 runs with Dinesh Chandimal (34).
Naseem Shah, who took three wickets, broke the stand after he got Chandimal caught by Haq.
Abrar, who returned figures of 4-69, soon got going with two quick wickets, including De Silva’s, to dent Sri Lanka’s hopes of a turnaround.
De Silva reached his 13th Test fifty and then hit a six off Abrar before the spinner had his revenge by getting him caught at mid-wicket.
De Silva batted with freedom, hitting nine fours and a six in his 68-ball innings, until his departure.
© Agence France-Presse