City was leading 1-0 over a spirited Villa side when from a short corner Kevin de Bruyne's cross found its way into the net in the 65th minute to double its advantage.
It was not immediately clear if David Silva had got the slightest of touches as the ball beat Tom Heaton, with the Villa keeper also unsighted by Raheem Sterling, who appeared to be in an offside position.
A lengthy check by the Video Assistant Referee (VAR) could not definitively rule if Silva had indeed touched the ball, which would have seen the goal ruled out for offside against Sterling.
READ: Has football gone too VAR?
To add to the controversy, Silva had gestured to on-field referee Graham Scott that the ball had touched him, while de Bruyne told BT Sport after the match that he also believed that to be the case.
Villa manager Dean Smith was less than impressed: 'From what I'm led to believe it should have been disallowed because David Silva touched it and Raheem Sterling is impeding our goalkeeper, but we have to leave that to VAR,' he told BBC Radio.
To rub salt into the Villa wound, the Premier League later officially awarded the goal to Silva.
More EPL controversy
Later Saturday, Everton and its under-pressure manager Marco Silva also fell foul of another highly controversial VAR ruling.
Dominic Calvert-Lewin had come off the bench to put the Toffees 2-1 ahead at Brighton in the 74th minute at the Amex Stadium.
But six minutes later Michael Keane was ruled by VAR to have fouled Aaron Connolly for stepping on his foot to concede the softest of spot kicks.
Neal Maupay slotted home the penalty before Brighton scored a last-gasp winner as Lucas Digne's own goal sunk Everton.
Fernandinho sees red
The in-form Sterling had given Manchester City the lead with a 46th minute strike, his 17th goal in 18 games for club and country, while Ilkay Gundogan added a clinical third against a by then deflated Villa side.
But further gloss was taken off the City win when Fernandinho was sent off near the end for a second yellow card after a needless foul on Keinan Davis.
With City struggling for defensive cover his absence through a ban will hardly help the cause of Pep Guardiola's team in the title defense.
Leicester sets new record
However, with its next Premier League match against Southampton, who were at the receiving end of a record 9-0 home rout by Leicester City Friday, the loss of the versatile Brazilian is unlikely to be keenly felt.
Leicester's sensational victory, with Ayoze Perez and Jamie Vardy both grabbing hat-tricks, was the biggest away win in the top-flight in the history of English football.
Visit CNN.com/sport for more news, videos and features
It also equaled the biggest margin of victory since the Premier League was formed, held by Manchester United since 1995, a 9-0 win over Ipswich Town.
It briefly lifted Leicester into second place in the standings, before Manchester City's win over Villa, while Liverpool looks to extend its advantage again at home to Tottenham Hotspur Sunday.
Bundesliga best for Lewandowski
Robert Lewandowski scored the crucial second as Bayern Munich went to the top in a tight Bundesliga title race with a 2-1 win over promoted Union Berlin.
His 53rd minute goal meant he has scored in each of the opening nine games, breaking the previous eight-game Bundesliga record set by Pierre-Emerick Aubameyang for Borussia Dortmund in 2015.
The prolific Polish striker has netted 19 in 13 games this season including the Champions League and German Cup.
His effort added to a first half goal by Benjamin Pavard for the Bavarian giants with Sebastian Polter pulling one back for Union Berlin with a penalty in the 86th.
With Borussia Dortmund and Schalke scoreless in their clash, Bayern is one point clear of Freiburg after nine rounds, but Wolfsburg can top the standings with a home win over Augsburg Sunday.
Meanwhile, in Serie A, defending champion Juventus was held to a disappointing 1-1 draw at lowly Lecce.
Paulo Dybala put Juve ahead with a 50th minute penalty, but the home side equalized from the spot six minutes later with Marco Mancosu on target.
Juventus coach Mauricio Sarri rested star player Cristiano Ronaldo ahead of two Serie A games in four days next week, but would have been relieved as closest rival Inter Milan fluffed its chance to go top, held 2-2 at home by Parma later Saturday.
It took a 51st minute equalizer from summer signing Romelu Lukaku to salvage a point for Inter, leaving the Nerazzurri a point adrift of Juve at the top of the league.
Visit CNN.com/sport for more news, videos and features Robert Lewandowski scored the crucial second as Bayern Munich went to the top in a tight Bundesliga title race with a 2-1 win over promoted Union Berlin.
- Biden administration has warned that Russia would face sanctions soon over the massive SolarWinds hacks and attempts to influence last