Shot out for 138 in their first innings, Pakistan received another jolt when paceman Wahab Riaz, nursing a hand injury sustained while batting, was ruled out of the contest.
Sri Lanka, however, could not make the most of the visitors' depleted attack and lost Kumar Sangakkara (34) and Lahiru Thirimanne (seven) to rival spinners to score 77 runs in the 30-over session.
Silva was unbeaten after a patient 64, which included eight boundaries, with skipper Angelo Mathews (11) at the other end with the hosts leading by nine runs with seven wickets in hand.
Resuming on 70 for one, Sangakkara was lucky not to have run himself out after a misunderstanding with Silva but fell on the very next delivery.
The left-hander stepped out against left-arm spinner Zulfiqar Babar to play a lofted shot and Asad Shafiq ran backwards to take a good catch, ensuring he tumbled inside the long on ropes.
Pakistan's improved catching also sent back Thirimanne who offered a bat-pad catch off leg-spinner Yasir Shah and an alert Azhar Ali pouched it at short leg on his second attempt.
Original source: SLanka lose wickets, overtake Pakistan