United spurned a chance to close on Chelsea after dropping points for the first time in seven matches at Villa, who had Gabriel Agbonlahor sent off in the 65th minute for a foul on former team-mate Ashley Young.
The draw ended United's run of six straight wins and left Louis van Gaal's side seven points off the pace in third place, while West Ham United, Southampton and Tottenham Hotspur all closed on them.
At the Etihad Stadium, City started with James Milner as an auxiliary striker and after growing into the game, the champions went ahead four minutes into the second half.
From Fernandinho's pass, Pablo Zabaleta scuttled into the area before cutting the ball back for Silva, who beat Julian Speroni with the aid of a deflection off Scott Dann.
Silva claimed his second goal in the 61st minute, neatly steering home at the near post from Aleksandar Kolarov's left-wing centre.
James McArthur thought he had replied for Palace moments later when he headed Yannick Bolasie's cross past Hart, but although Fernandinho appeared to have played him onside, the assistant referee's flag went up.
Palace manager Neil Warnock called it "a disgraceful decision".
Toure made the game safe for City in the 81st minute, collecting a square pass from Milner and slamming home left-footed at the near post.
Christian Benteke put Villa 1-0 up in the 18th minute at home against United by chesting down a deep free-kick, stepping inside Jonny Evans and curling a fine left-foot shot inside the left-hand post.
David de Gea produced a stunning save to tip a header from Benteke over the bar early in the second half, before Falcao met Young's cross with a powerful 53rd-minute header to claim his first goal since October.
United's record signing Angel di Maria made his return from a hamstring injury as a replacement for Robin van Persie, but despite Agbonlahor being shown a straight red card for catching Young, Villa held on.
Fourth-place West Ham are now just a point behind United after beating bottom club Leicester City 2-0 at Upton Park.
Andy Carroll seized on West Ham old boy Paul Konchesky's disastrous back-pass to put the hosts ahead in the 24th minute and Stewart Downing made it 2-0 in the 56th minute with an stunning 25-yard effort.
Southampton are two points further back after ending a five-game losing streak by beating Everton 3-0 thanks to a Romelu Lukaku own goal and second-half efforts from Graziano Pelle and Maya Yoshida.
Tottenham leapfrogged Arsenal, who host Liverpool tomorrow, by beating Burnley 2-1.
Ashley Barnes cancelled out Harry Kane's headed opener for Spurs with a blistering shot from 20 yards, but Erik Lamela gave the hosts victory with a swerving long-range effort 10 minutes before half-time.
Charlie Austin took his tally for the season to 11 goals with a hat-trick as Queens Park Rangers came from 2-0 down to win 3-2 at home to West Bromwich Albion, who scored through Joleon Lescott and Silvestre Varela.
The win took QPR out of the relegation zone, but Hull City remain in the bottom three after Jonjo Shelvey's shot deflected in off Ki Sung-yueng to earn Swansea City a 1-0 victory at the KC Stadium.
- AAP