Brendan Rodgers's Liverpool started the day in first place and they made an impressive start at the Etihad Stadium, with Philippe Coutinho giving the visitors a 24th-minute lead after a neat team move.
However, City captain Vincent Kompany headed home an equaliser seven minutes later and Alvaro Negredo put the hosts in front on the stroke of half-time with a tame shot that Liverpool goalkeeper Simon Mignolet could only palm into the net.
"The most important thing today was that we were losing 1-0 but we had the character and the trust to go for the win and we continued trying to attack," said City manager Manuel Pellegrini.
"I think it was very important to try to finish the year near the top of the table."
City, who have now won all nine of their home games this season, climb to second place, a point behind Arsenal, while Liverpool, for whom Raheem Sterling spurned a fine second-half chance, are three points off the pace.
"We're all very proud of the team tonight," said Liverpool manager Rodgers.
"I thought how we played -- the charisma in our football, and the passing in our game -- was exceptional.
"We're bitterly disappointed not to win the game, but my overriding feeling is one of pride, because it was an outstanding performance."
Earlier, Theo Walcott had scored twice as Arsenal came from behind to win 3-1 against West Ham United at Upton Park.
Arsenal spurned several first-half chances and they were punished early in the second period when Carlton Cole put the hosts in front after Wojciech Szczesny spilled a shot from Kevin Nolan.
However, Walcott struck twice in three minutes to turn the game around, before Lukas Podolski crowned his comeback from a hamstring injury with a low strike in the 79th minute.
"We couldn't take our chances in the first half and we responded very well in the second half, in the end winning the game in a convincing way," said Arsenal manager Arsene Wenger.
"I am proud of the character of this team because they are always focused and try to do well."
Chelsea also leapfrogged Liverpool, moving up to third place by beating Swansea City 1-0.
Belgian winger Eden Hazard scored the game's only goal in the 29th minute at Stamford Bridge, cutting in from the left in familiar fashion before letting fly with a low drive that squeezed beneath Gerhard Tremmel.
"With the three points and clean sheet, I am satisfied," said Chelsea manager Jose Mourinho.
"But we had so many chances that you have to score at least once and create a more comfortable situation for yourselves."
Everton's hopes of making further ground on the Champions League contenders were thwarted, however, as they crashed to a 1-0 defeat at home to bottom club Sunderland.
Ki Sung-yueng scored the game's only goal from the penalty spot in the 25th minute, after Everton goalkeeper Tim Howard was sent off for a foul on the South Korea international.
It was Sunderland's first away win since April and left Gus Poyet's men three points from safety.
Manchester United doggedly overturned a two-goal deficit to win 3-2 at Hull City and register their fifth consecutive victory in all competitions.
Early goals from James Chester and David Meyler gave Hull a 2-0 lead, only for Chris Smalling and Wayne Rooney, with a sumptuous volley, to bring United level, before Chester scored a 66th-minute own goal.
"To be two down and come back to win is a great result," United manager David Moyes told the BBC.
"There's a long way to go in the league and we have to keep picking up points. I believe we can be in the mix and challenge whoever is near the top."
Newcastle United closed to within three points of the Champions League places by coming from behind to overwhelm nine-man Stoke City 5-1 at St James' Park.
Stoke took the lead through Oussama Assaidi, but they had Glenn Whelan and Marc Wilson sent off, allowing Newcastle to prevail through a Loic Remy brace and goals from Yoan Gouffran, Yohan Cabaye and Papiss Cisse.
Tottenham Hotspur's new permanent head coach Tim Sherwood saw his side draw 1-1 at home to West Bromwich Albion, for whom Jonas Olsson cancelled out Christian Eriksen's 36th-minute free-kick.
Southampton, meanwhile, ended a run of six games without victory by winning 3-0 at Cardiff City through a Jay Rodriguez brace and a Rickie Lambert strike.
Scott Parker scored a stunning 87th-minute winner as Fulham won 2-1 at Norwich City, but they remain in the bottom three due to Crystal Palace's 1-0 win at Aston Villa, which lifted Tony Pulis's men out of the drop zone.