Silva set up Gabriel Jesus to open the scoring from close range on 10 minutes.
Riyad Mahrez made it 2-0 soon after, tapping in his 10th goal of the season from Kevin De Bruyne's 18th assist of 2019/20.
After the break Federico Fernandez netted an unfortunate own goal before Silva curled in a fantastic 65th-minute free-kick.
Silva put the gloss on a wonderful performance to set up substitute Raheem Sterling in stoppage time.
City’s win keeps them second on 69 points, nine above third-placed Chelsea, while Newcastle drop to 13th as their six-match unbeaten run comes to an end.
Man City: 11 Jul v Brighton (A)
Newcastle: 11 Jul v Watford (A)