Kumar Sangakkara and Thilan Samaraweera struck centuries to lead Sri Lanka to 317 for four on the first day of the second Test on Sunday.
Pakistan ended their partnersip of 204 with the second new ball when Sangakkara was caught behind for 104 off Yasir Arafat but Samaraweera was still unbeaten on 133 when bad light ended play 3.2 overs early.
Both centurions had let-offs after reaching their fifties and they made Pakistan pay for their decision to field first.
Seamer Umar Gul made early inroads, removing openers Malinda Warnapura (8) and Tharanga Paranavitana (21) and ending a 61-run stand between Sangakkara and captain Mahela Jayawardene (30) to leave the visitors on 96 for three.
Samaraweera, who made 231 in the drawn first Test in Karachi, smashed Malik through mid-wicket to reach his hundred, his third against Pakistan.
Scorecard:
Sri Lanka first innings
M. Warnapura c Misbah b Gul 8
N. Paranavitana c Malik b Gul 21
K. Sangakkara c Akmal b Arafat 104
M. Jayawardene c Akmal b Gul 30
T. Samaraweera not out 133
TM Dilshan not out 3
Extras (b-4, w-2, nb-12) 18
Total (for four wickets in 86.4 overs) 317
Fall of wicket: 1-16, 2-35, 3-96, 4-300
To bat: P. Jayawardene, T. Thushara, D. Fernando, A.Mendis, M.Muralitharan
Bowling (to date):
Gul 19.4-2-67-3 (nb-2, w-1)
M. Talha 11-0-50-0 (w-1, 7-nb)
Arafat 13-2-53-1 (nb-3)
Kaneria 24-1-89-0
Malik 17-2-45-0
Younis 2-0-9-0