The Spain international expertly converted Raheem Sterling's 10th-minute cross before getting on the end of Gabriel Jesus' lofted pass to make it 2-0 early in the second half
The result leaves City needing only a maximum of three wins from eight remaining games to take the title, but two would suffice if one of them comes against second-placed Manchester United.
That means there is a possibility City could complete the job in the derby against rivals United on April 7, if they beat Everton in their next game on March 31.
City were without top scorer Sergio Aguero but his absence mattered little as they barely needed to get out of second gear against the relegation-threatened Potters.
Stoke did begin aggressively in the hope of suffocating City but the visitors soon stretched them by playing a few longer passes.
Within 10 minutes City had broken through after Gabriel Jesus released the fit-again Raheem Sterling down the right. Sterling picked out Silva in front of goal and the Spaniard flicked home.
Stoke went for long spells without touching the ball but they created a chance out of nothing as Xherdan Shaqiri nutmegged Oleksandr Zinchenko. The Swiss pulled the ball back for Badou Ndiaye but his shot was deflected wide by Fernandinho.
Kyle Walker then almost managed to lob his own keeper after getting an awkward touch under pressure from Jese following a long clearance from Jack Butland, but Ederson scrambled back to palm over.
Aside from that, Stoke were chasing the ball. City went close to a second when Kevin De Bruyne whipped in a dangerous free-kick but Jesus failed to make contact. Fernandinho also forced a good save from Butland from the edge of the area. Leroy Sane volleyed wide from a De Bruyne cross.
Stoke managed to reach the break without further damage but City doubled their lead within five minutes of the restart.
Silva drove City forward, found Jesus on the edge of the box and then watched the Brazilian's bouncing return pass superbly to fire home as Butland rushed out to meet him.
Sterling then jinked through the Stoke box before being denied by the feet of Butland, who also saved from Fernandinho. Sane curled another effort narrowly wide.
Stoke made a mess of a drop-ball situation in the latter stages and Sterling went through on goal but Ndiaye just did enough to put him off as he attempted to round Butland. Ndiaye then turned to complain, perhaps suggesting City had been unsporting, and Moss had to becalm increasing tension.
Bruno Martins Indi did volley over but the hosts offered little else as City eased to victory.