Manchester City staged a dramatic late fightback to keep their title bid alive, coming from 3-1 down to draw with Sunderland at Etihad Stadium.
Sebastian Larsson put Sunderland ahead before Mario Balotelli equalised from the spot after Edin Dzeko was fouled.
The visitors restored their lead via Nicklas Bendtner's header and extended it when Larsson met Bendtner's cross.
But Balotelli fired in and Aleksandar Kolarov drilled home to level, although City lost their 100% home record.
Despite their spirited comeback, City know that if Manchester United win at Blackburn on Monday the 19-time champions will move five points clear at the Premier League summit.
It was a thrilling end to a match in which Sunderland produced a brilliant away performance to stand on the verge of a huge upset.
But from the moment excellent centre-back Matt Kilgallon was replaced by Sotirios Krygiakos on 80 minutes, the visitors appeared vulnerable.
City were especially grateful for the intervention of Balotelli, a player boss Roberto Mancini said on Friday he does not trust.
The Italian striker was involved in an angry exchange with Kolarov on 65 minutes, yet it seemed to galvanise him to engineer City's revival.
At 3-1 down on 85 minutes, Balotelli cut in from the left to rifle a superb finish across Simon Mignolet - and 69 seconds later it was 3-3.
Until then, neither Balotelli nor his team-mates displayed the sort of pace, power or intelligence that has characterised much of their season.
Sunderland threatened twice in the first five minutes through James McClean and Sessegnon, while Craig Gardner hit the side-netting.
Having then squandered two chances of their own - Mignolet denying Dzeko and Balotelli heading over - City were punished.
Sessignon surged in from the left and fed an unmarked Larsson, who side-footed into Joe Hart's bottom corner from just outside the box.
City finally generated some momentum as Kolarov and Yaya Toure went close before Gardner brought down Dzeko.
Sunderland