Manchester City survived a brief scare to beat Southampton and reduce league leaders Liverpool's advantage to seven points.
Southampton responded to David Silva's early opener when Pierre-Emile Hojbjerg took the ball off Oleksandr Zinchenko and fired it into the top corner.
City had luck on their side when Raheem Sterling's shot deflected off James Ward-Prowse to make it 2-1.
Sergio Aguero's back-post header completed the scoring before half-time.
Southampton goalscorer Hojbjerg - who had only just returned from suspension - was shown a straight red card for a lunging tackle on Fernandinho with just over five minutes to go.
City had a number of decent chances as Silva, Aguero and Riyad Mahrez all went close in the first half and Aguero smacked the crossbar after the break.
Southampton threatened too and Charlie Austin was twice denied by City keeper Ederson in the first half before Hojbjerg's equaliser.
But the Saints were ultimately undone by Pep Guardiola's free-flowing side, who move up to second place in the table.
Liverpool went 10 points clear of City at the top of the table with a devastating 5-1 thrashing of Arsenal on Saturday, meaning the defending champions needed victory to keep pace in the title race.
City appeared to feel the pressure on Boxing Day when they squandered an early lead and allowed Leicester to win 2-1 at the King Power Stadium.
But they stood up to the challenge at St Mary's - peppering Southampton's goal from the off and responding to the equaliser with two quick goals on the stroke of half-time.
Riyad Mahrez's chance for City, which went wide in the first half, was the result of a superb passing move out from the back
City's opening goal was straight from Guardiola's textbook: Bernardo Silva's neat build-up down the right and cut-back into the centre was comfortably put away by an unmarked David Silva.
Sterling's shot was then deflected by Ward-Prowse and flapped into the net by Alex McCarthy to make it 2-1 before Aguero headed in Zinchenko's cross at the back post with ease.
It means City can cut Liverpool's lead to four points when the two teams meet at the Etihad Stadium on 3 January.
Southampton goalscorer Pierre-Emile Hojbjerg returned to the starting XI following a suspension for five yellow cards but was sent off late in the game for a wild lunge at Fernandinho
The last time Southampton played City in early November they were hammered 6-1 and failed to respond to three early goals.
But this time Southampton posed a threat and came close to breaking down a slightly nervy City defence on occasions.
Austin's header at the near post was well saved by Ederson in the first half and that came moments after the keeper had avoided Hojbjerg's sliding tackle on the goal-line.
And Saints' pressing paid off when Hojbjerg robbed Zinchenko of the ball in the build-up to his equaliser.
City could not extend their lead in the second half but Southampton's good work was only undone by the late sending-off of Hojbjerg.
A trip to Stamford Bridge is a difficult start to the new year but the Saints will likely avoid the drop if they can produce performances like this in the second half of the season.
Southampton manager Ralph Hasenhuttl: "The first 15-20 minutes we were not very good but we smelt a bit of sensation when we equalised. We saw that Man City is not that confident in the moment like they are when they win week after week. We tried to push ourselves back into the game and press a little bit earlier but we saw when they have time to turn they are dangerous.
"At half time we thought about preparing the guys for a good second half but in the mind was also the next game against Chelsea. And then the worst thing happened in the red card for Pierre-Emile Hojbjerg which is disappointing because he is one of the most important players in our team.
"In a game which is 3-1 and with only five minutes to go, you have to ask the use of such a tackle. He knows it was the wrong decision but it doesn't help us in the moment."
Manchester City manager Pep Guardiola: "It was important to win after two defeats and the players did what they had to do. If one team achieves 100 points and then the year after make 45 in the first round it is not all bad.
"Before 1-1 we played to score more, then they scored and the game was more equal but we carried on and scored the second goal. In previous games we did everything, and the first time the opponent arrived in our half they scored."
Southampton travel to Stamford Bridge to take on Chelsea on Wednesday, 2 January (19:45 GMT), while Manchester City host league leaders Liverpool at the Etihad on Thursday, 3 January (20:00 GMT).