Tillakaratne Dilshan was unbeaten on a fluent 56 and Kumar Sangakkara was on 12 after Sri Lankan skipper Mahela Jayawardene won the toss and elected to bat in the first game of the three-Test series.
Dilshan, who shared an opening stand of 63 with Tharanga Paranavitana, has so far hit six boundaries and a six.
The first session was crucial for both teams since Pakistan's best chance of taking wickets on the slow pitch was to exploit the early moisture on the surface.
The seamers regularly beat the bat and the spinners made the ball turn as the wicket dried up, but Sri Lanka's batsmen stood up well to the challenge.
Pakistan's lone success came midway through the session when Paranavitana was stumped in off-spinner Saeed Ajmal's first over after making a scratchy 24.
Paranavitana should have gone on 15 when he was beaten by an Umar Gul delivery, but umpire Ian Gould turned down a loud appeal for a catch at the wicket.
Replays showed a thin edge, but Paranavitana survived because the Umpire Decision Review System (UDRS) is not being used in the series.
The left-hander moved to 24 when he was dropped by Azhar Ali at silly point off Ajmal, but was dismissed later in the same over.
Mohammad Hafeez was leading Pakistan for the first time in Test cricket after Misbah-ul Haq was handed a one-match ban for his team's slow over-rate in Monday's final one-day international.
The tourists awarded a Test cap to 32-year-old middle-order batsman Mohammad Ayub, a veteran of 93 first-class matches in which he has scored 6,074 runs.
Pakistan picked two seamers, Gul and Junaid Khan, to complement a three-man spin attack of Hafeez, Ajmal and Abdur Rehman.
The hosts were without frontline seamer Chanaka Welegedara, who woke up with a sore shoulder and was replaced by Nuwan Pradeep.