After a humiliating 4-0 defeat at Everton, Ole Gunnar Solskjaer made five changes to the United XI and he was rewarded with an enterprising first-half display.
But PFA Player of the Year nominee Silva broke the deadlock in the 54th minute and Sane gave the off-colour David de Gea another moment to forget 12 minutes later.
City is a point ahead of Liverpool, knowing victories in its final three games will guarantee back-to-back titles and complete two-thirds of an unprecedented domestic treble.
Jesse Lingard volleyed wide from Paul Pogba's exquisite 16th-minute pass as an end-to-end contest began to develop – De Gea beating away Silva's rasping drive before United sprung up the field and Marcus Rashford was denied by an alert Ederson.
City gradually found its poise as half-time approached, with De Gea thwarting Raheem Sterling at the end of a deft move in the United box.
Fernandinho hobbled off injured after making a brilliant tackle on Pogba early in the second half.
Sane's introduction meant Ilkay Gundogan dropping back to the base of the midfield and Silva dropping into a central role, and the two men combined in their new positions as the Portugal international caught out De Gea at his near post.
Sergio Aguero then hit a rasping shot against the outside of the same upright but Lingard passed up a chance to level when Rashford's bouncing ball across goal evaded Vincent Kompany and the England midfielder.
Sterling's charge around Fred to tee up Sane was the nerve-settling moment City required and United's earlier verve evaporated as a result.