Leicester defender Jannik Vestergaard missed a golden chance from an early corner, but he could not get a clean connection on his header and it sailed over the bar.
And moments later Vardy thought he had sprung the offside trap to give the home side the lead, but the flag went up for offside.
The Foxes were then made to pay as Silva found the back of the net.
With his pace and assured first touch, Vardy threatened throughout and City were delighted that they managed to withstand the wave of counter-attacks that often put them on the back foot in the last half hour.
"We did really well, the process we found and we let them run a lot. We know how dangerous Jamie Vardy and also Harvey Barnes are in transition. The players were able to be focused and to concentrate," City boss Pep Guardiola told the BBC.
"Kasper Schmeichel is a really top keeper so it sometimes happens. The good thing is the amount of chances we create. This is a good thing. Of course, we would have loved to score more goals," he added.
"I thought we deserved something from the game. You have to stay in the game against a team of that quality but I thought we were excellent and created a lot of chances," Leicester manager Brendan Rogers said.