City ensured they will be top at Christmas with a 3-0 home win over Stoke City thanks to two goals from Sergio Aguero, while Manchester United won 5-0 at Fulham where Ryan Giggs scored to maintain his record of scoring in all 20 seasons since the Premier League began.
Giggs' first league goal of the season came just before Aston Villa's Marc Albrighton scored the 20,000th since the Premier League started in 1992-93 to cancel out Robin Van Persie's first-half penalty for Arsenal.
Villa's relief was short-lived though as Yossi Benayoun struck with an 87th-minute header to give Arsenal a 2-1 win, their eighth in their last 10 league matches.
The results lifted City on to 44 points, two ahead of United. Third placed Tottenham Hotspur (34 points) and fourth placed Chelsea (32) meet at White Hart Lane on Thursday.
Skipper John Terry is expected to play for Chelsea despite being told on Wednesday he was being prosecuted for allegedly racially insulting an opponent two months ago.
Luis Suarez, found guilty on Tuesday and banned for eight matches for racially insulting Manchester United's Patrice Evra in October, was allowed, pending an appeal, to play for Liverpool whose Charlie Adam missed a penalty in a 0-0 draw at Wigan Athletic.
In other matches Sunderland won 3-2 at Queens Park Rangers, West Bromwich Albion won 3-2 at Newcastle United and Everton beat Swansea City 1-0 at Goodison Park.