Adam Johnson came back to haunt Manchester City as the champions slipped to a third successive 1-0 Barclays Premier League defeat at Sunderland.
The England winger, who was considered surplus to requirements at the Etihad Stadium during the summer and was allowed to join the Black Cats in a £10million move, embarrassed former team-mate Joe Hart with a dipping 53rd-minute strike which beat him at the near post and clinched three precious points for his new employers.
However, the winner was not without controversy with the visitors adamant they should have been awarded a free-kick for a foul on Pablo Zabaleta during the build-up.
Sunderland turned in one of their best displays of the season on a day when City played only fitfully, and Hart had to turn away Steven Fletcher's skidding effort and keep out Stephane Sessegnon 10 minutes from time.
However, if Johnson was the hero in front of a delighted Boxing Day crowd of 42,190, keeper Simon Mignolet deserved equal praise.
The Belgian denied Yaya Toure and David Silva before the break and Sergio Aguero after it to claim a precious clean sheet and make a huge contribution towards the win.
City arrived determined not to complete an unwanted hat-trick of 1-0 league defeats on Wearside and, after a lacklustre start, eased themselves into the game.
They might have been ahead with just eight minutes gone, but Vincent Kompany's header came back off the crossbar and Yaya Toure's goalbound follow-up was hacked away by Mignolet, who reacted instantly to deny the visitors an early lead.
Silva curled a 10th-minute free-kick wastefully over the bat and Toure saw a curling effort plucked from underneath the crossbar by Mignolet three minutes later.
City were pinning Sunderland deep inside their own half and it seemed only a matter of time before they made the pressure tell.
Mignolet had to be at his best once again with 24 minutes gone after Carlos Tevez and Aguero combined to put Silva in on goal, only for Mignolet to block his effort at close range.
But seconds later Hart had to dive to his right to turn away Fletcher's rasping left-foot drive and the Black Cats, buoyed after weathering the early storm, started to force their way into the game.
Johnson was enjoying the better of his individual battle with Zabaleta, who played much of the half with a heavily bandaged head after suffering a cut, and as James McClean took up the theme, Martin O'Neill's men upped their tempo.
Kompany and Matija Nastasic had to repel dangerous crosses from Sebastian Larsson and McClean respectively, and Sessegnon flashed a header well wide from Craig Gardner's driven 42nd-minute cross.
Larsson drilled a late free-kick straight into the defensive wall, but he and his team-mates left the pitch at the break with their clean sheet intact and everything still to play for.
Sunderland picked up where they had left off after the restart as McClean and Johnson, with the help of Sessegnon and Fletcher, stretched City uncomfortably at times. It was they who took the lead with eight minutes of the half played.
City boss Roberto Mancini and Zabaleta were left appealing in vain for a free-kick for Gardner's challenge on the full-back, but Johnson picked up possession and cut inside before blasting in a dipping shot which caught Hart flat-footed at his near post and squirmed into the bottom corner.
Sessegnon might have doubled his side's advantage within two minutes, but pulled his effort across the face of goal with City in disarray.
The visitors were almost breached once again on the hour when McClean picked out Sessegnon in front of goal, but the Benin international could not take the ball in his stride.
Kompany, who had already been booked, was fortunate to escape a second yellow card for a block on McClean as City struggled to contain a Black Cats side growing in confidence by the minute.
But the visitors gradually regained their composure and started to move the ball confidently once again and Mignolet had to claim a 68th-minute Zabaleta cross at his near post after being played in by James Milner.
The Belgium international excelled himself once again two minutes later to deny Aguero one on one, but it was Hart in the firing line with 10 minutes remaining when Sessegnon was played in by substitute Fraizer Campbell with the keeper coming out on top.
City battered away at their hosts as time ran down, but with Sunderland defending deep and with tenacity, they simply could not find a way through and McClean almost served up the perfect finish with an 88th-minute shot which flew just wide.