The diminutive right-hander was unbeaten on 113 off 273 deliveries, his second Test century after making 139 against Bangladesh in Dhaka in January last year.
Dilruwan Perera was the other batsman at the crease on 11 after Pakistan, who elected to field after winning the toss, grabbed three wickets in the extended morning session of the rain-hit Test.
After bad weather had washed out the entire first day's play on Wednesday, just 64 overs were bowled on the second day due to a wet outfield at the Galle International Stadium.
Sri Lanka added 11 runs to their overnight score of 178-3 before they lost the wicket of skipper Angelo Mathews, who was bowled by left-arm seamer Wahab Riaz for 19.
Dinesh Chandimal contributed 23 in a fifth-wicket stand of 37 with Silva when he was bowled by Zulfiqar Babar, another left-arm seamer, who was handed the second new ball which was claimed after 80 overs.
Silva, who began the day on 80, reached his century 30 minutes before lunch when he drove Babar through the covers off the 261st delivery he had faced.
He has so far hit 15 boundaries, defending solidly at one end as wickets tumbled at the other.
Kithuruwan Vithanage was the third batsman to be dismissed in the session when, on 18, he gave Mohammad Hafeez an easy return catch.
The three-Test series will be followed by five one-day internationals and two Twenty20 matches. – AFP
Original source: Silva shines for Sri Lanka