The home side now require a world-record fourth innings for victory after Sri Lanka were dismissed for 365 in their second innings on Sunday.
Batting to save the game and protect a 1-0 series lead, New Zealand made a positive start to reach 56 without loss before openers Jamie How and Craig Cumming fell in quick succession.
Mathew Sinclair was not out 10 with Stephen Fleming on four when bad light brought an early end to the day with New Zealand at 75 for two, leaving them needing another 429 runs with two days remaining.
Silva put the embarrassment of a double duck in the first Test behind him to produce his maiden Test century following his 61 in the first innings here.
He was at the crease for five-and-a-half hours and hit 20 boundaries as Sri Lanka built a dominant total until Daniel Vettori cleaned up the last three wickets in the space of four balls.
Vettori was New Zealand's chief destroyer, at one stage sitting on a hat trick when he dismissed Farveez Maharoof and Lasith Malinga in successive balls and finishing with seven for 130, his 13th five-for in Test cricket.
The 27-year-old Silva put his name in the record books by becoming the first player in Test history to score a century in his first game after a pair of ducks.
After a tentative start in his debut Test in Christchurch, Silva showed no sign of nerves here at the Basin Reserve as he anchored Sri Lanka's charge to level the series.
When play began after rain wiped out the first 40 minutes of the third morning, Silva and Prasanna Jayawardene added 37 runs before the new ball came into play and Chris Martin took the only wicket of the morning.
Jayawardene pulled a short-pitched Martin ball to the boundary, and was suckered into the same shot two deliveries later, spooning the ball straight to the substitute fielder at square-leg to be out for 37.
Chaminda Vaas joined Silva to further frustrate the New Zealand bowlers as they added 88 for the seventh wicket before Vaas edged Vettori to wicket-keeper Brendon McCullum to be out for 47.
How and Fleming were untroubled as they set about the run chase for New Zealand until the 15th over, when How was completely baffled by a Malinga delivery which trapped him leg before wicket for 33.
Cumming followed eight balls later for 20 when he failed to read the famous "doosra" of Muttiah Muralitharan and succeeded only in nicking the ball to Kumar Sangakkara behind the stumps.
Time is not an issue in a Test marked by a low-scoring first innings but the weather could be a factor, with two days remaining and showers in the forecast.
For New Zealand even to get close to their 504-run target, they will have to beat the current best fourth-innings winning performance of the West Indies, who made 418 for seven to beat Australia three years ago.