City, playing without a striker, missed a host of chances during the first half but the Premier League champions’ dominance eventually paid off as Silva helped himself to two second-half goals before Toure rounded things off with 10 minutes to go.
James McArthur had a header wrongly ruled out for offside for the visitors midway through the second half but in truth Manuel Pellegrini’s side ran out comfortable winners as they searched for a fourth goal to send them top of the league on goal difference.
They did not find the goal they needed to top the table outright but the champions sent out a warning in the title race as they stretched their winning run to eight matches in all competitions, one short of equalling a club record.
Pellegrini started the afternoon fielding a team without a recognised striker after injuries ruled out regular trio Sergio Aguero, Stevan Jovetic and Edin Dzeko. James Milner was used as an emergency striker with Silva and Samir Nasri providing support to the England international.
Palace made two changes, with Jason Puncheon and Fraizer Campbell coming in for Wilfried Zaha and the injured Marouane Chamakh, and it was the Eagles who made a positive start at the Etihad.
Neil Warnock’s side forced an early corner which Joe Hart, fresh from signing a new five-year deal, needed to punch clear in commanding fashion.
Just minutes later City produced their first chance of the match after an intricate passing move released Pablo Zabaleta down the right, but Nasri could not convert the full-back’s cut back.
Pellegrini’s men were starting to tighten their grip on the game with Fernandinho and Nasri going close with long-range efforts, however the visitors looked dangerous on the break through the speedy Yannick Bolasie.
In the 15th minute, the DR Congo international breezed past Zabaleta and once again Hart was forced into action, the England No 1’s parry falling to safety. Hart was called on again minutes later as he beat away another corner at the near post with Eagles skipper Mile Jedinak poised to pounce.
Warnock’s side were now enjoying their best period of the game and they were inches from taking the lead when Campbell beat the offside trap, but his acrobatic over-head kick drifted just wide of the post.
The home side responded with chances of their own and Nasri was the man looking most likely to unlock the well-drilled Palace back four. The Frenchman produced a direct run into the penalty area before playing in Silva but the Spaniard poked his shot wide.
Next it was Toure with a shot – after a brilliant one-two with Aleksandar Kolarov – but once again he failed to test Julian Speroni.
Half chances fell to both Campbell and Bolasie as the visitors continued to trouble the City defence but the majority of possession was with the home side and they nearly made it tell just before the break.
Toure, who was starting to have more influence on the game, produced an inch-perfect through ball as Zabaleta timed his run to perfection, but with the goal gaping his lobbed finish shaved the outside of the post.
City continued to press forward in search of the opener through their other full-back but Milner failed to make proper contact with Kolarov’s dangerous cross, allowing Joel Ward to clear the danger.
Whatever Pellegrini said to his side at the interval worked as they came out with renewed attacking vigour and it paid dividends straight away as Fernandinho found Zabaleta on another storming run and the Argentine’s clever pass was fired into the net by Silva after a deflection.
The goal was no more than the home side deserved and they could have quickly doubled their advantage, but Toure’s powerful shot flew high over the bar.
Palace were hanging on and Jesus Navas was next to test the visitors’ defence, driving past two defenders before putting in a testing early cross, but with Milner poaching at the front post Scott Dann cleared the danger.
It was all City and they made their dominance count. This time it was the other full-back causing problems as Kolarov’s cross from the by-line found Silva, who pulled away from his marker to produce a tidy left-foot finish from six yards to score his second of the afternoon.
Palace, who threw on Zaha for Campbell in the 67th minute, thought they grabbed a foothold back in the match and it was the lively Bolaise who was at the heart of it as his cross found McArthur, who beat Hart with a powerful header. But the flag wrongly went up with Fernandinho playing the midfielder onside.
It was certainly a huge let-off for City, who replaced two-goal hero Silva with Frank Lampard, but the result was never really in doubt and all three points were secured with 10 minutes remaining when Toure finished a fast counter-attack with a thumping finish, beating Speroni at his near post.
The win means City pile the pressure on Chelsea and move level on 39 points with Jose Mourinho’s side, who play Stoke City on Monday Night Football.
Man City: Hart(7), Zabaleta (8), Demichelis (7), Mangala (6), Kolarov (7), Fernandinho (7), Navas (7), Yaya Toure (7), Silva (9), Nasri (8), Milner (7).
Subs used: Fernando (6) , Lampard (6), Sinclair (5).
Crystal Palace: Speroni (6), Kelly(5), Dann (6), Hangeland (6), Ward (5), Bolasie (8), Jedinak (7), Ledley (6), McArthur (7), Puncheon (5), Campbell (6).
Subs used: Bannan (5), Thomas (5), Zaha (5).
Man of the Match: David Silva