Fast bowler Lahiru Kumara and spinner Lasith Embuldeniya picked up four wickets each to help Sri Lanka bundle out hosts Pakistan for 191 in the first innings on the opening day of the second and final Test in Karachi on Thursday.
Asad Shafiq and Babar Azam struck fifties with opener Abid Ali, who made 38, the only other batsman for the hosts to reach double digits after captain Azhar Ali won the toss and chose to bat first.
In reply, Sri Lanka reached 64 for three in their first innings at the close of the day's play with Pakistan's fast bowlers doing all the damage.
Oshada Fernando was the first to fall to Pakistan's young fast bowler Shaheen Afridi for four while captain Dimuth Karunaratne was out for 25, dragging Mohammad Abbas on to his stumps.
Abbas also dismissed Kusal Mendis for 13, leaving former skipper Angelo Mathews, unbeaten on eight, and nightwatchman Embuldeniya to take Sri Lanka to stumps.
Earlier, left-arm seamer Vishwa Fernando gave Sri Lanka a brilliant start by sending back Pakistan opener Shan Masood and Azhar, who has not scored a fifty since his 134 against New Zealand in December, 2018, in the space of three deliveries.
Azam, who made 60, added 55 with Abid for the third wicket and another 62 for the fourth with Shafiq to steady the innings for Pakistan.
Left-arm spinner Embuldeniya, who came into the side for injured fast bowler Kasun Rajitha, got Babar out stumped and also took the wickets of Harish Sohail and tailenders Mohammad Abbas and Shaheen Afridi to wrap up the innings.
Kumara bowled at a brisk pace during the entire day and dismissed Mohammad Rizwan and Yasir Shah in consecutive deliveries to add to the wicket of Abid.
Shafiq fell in a soft fashion when he top edged Kumara to fine leg to fall for 63, ending Pakistan's hopes of posting a score in excess of 200.
Both sides were forced into changes in the bowling department due to injury and illness.
Pakistan added experienced leg-spinner Yasir Shah for fast bowler Usman Shinwari, who is down with fever, while Sri Lanka included Embuldeniya in the side.
The two-match series, part of the World Test Championship, marks Pakistan's first Tests on home soil since the 2009 militant attack on Sri Lanka's team bus in Lahore.
The weather-hit opening Test at Rawalpindi ended in a draw.
Dinesh Karthik to remain captain, KKR confirm
Dravid's son Samit hits double century in U-14 match
Teams arrive in Bhubaneswar for ODI series decider
CAA unrest: Cricketer Harbhajan appeals for peace
Why is Virat so animated? Please ask him, says Pollard