Colombo - Mohammad Hafeez missed a double century by four runs and Azhar Ali compiled an unbeaten ton as Pakistan continued to pile up runs in the second Test against Sri Lanka on Sunday.

Hafeez fell for 196 and Azhar was unbeaten on 121 as the tourists moved from their overnight score of 334-1 to 404-2 by lunch on the second day at the Sinhalese Sports Club in Colombo.

Sri Lanka earned a breather when heavy rain ended the morning session 10 minutes early and threatened to further curtail the rest of the day's play.

Pakistan, who lost the first Test in Galle by 209 runs to trail 1-0 in the three-match series, made Sri Lanka pay for their surprising decision to field first after winning the toss.

The second-wicket pair of Hafeez and Azhar toned down their aggressive approach on the second morning to frustrate a rival attack looking for quick wickets to stem the flow of runs.

Their partnership of 287 was the highest on Sri Lankan soil for any wicket, surpassing the 258 by Australians Mike Hussey and Shaun Marsh at Pallekele last year.

Hafeez fell short of a coveted 200 when, after a patient knock that lasted seven hours, he was bowled attempting a wild heave off Rangana Herath to reach the landmark.

The all-rounder hit 20 boundaries and a six.

Azhar, who was on 92 overnight, took an hour to reach his hundred by smashing seamer Nuwan Pradeep to the point fence after being stranded on 99 for 20 agonising minutes.

It was the Lahore batsman's third century and the second in three Tests after making 157 against England in Dubai in February.

Azhar has so far hit seven boundaries. Younis Khan was the other batsman at the crease on 14. - Sapa-AFP