Chelsea winger Arjen Robben scored a stunning late winner as Jose Mourinho's side kept up the pressure on Manchester United at the top of the Premiership table.
The Blues looked on course for an easy victory as they cruised into a two-goal lead by the half-hour mark with goals from stand-in captain Frank Lampard and Salomon Kalou.
But Wigan produced a storming comeback, with £5.5million club record signing Emile Heskey scoring twice, only for Robben to strike in the third minute of injury time with a superb individual goal.
Earlier, Cristiano Ronaldo and Paul Scholes ensured Manchester United would be top of the Premiership on Christmas Day as the leaders won 3-0 at Aston Villa.
After a goalless first half, Ronaldo wasted little time putting United ahead, running 40 yards, seeing his first shot blocked, and following up to score past emergency-loan goalkeeper Gabor Kiraly.
United doubled their advantage after Scholes volleyed in one of the goals of the season, waiting for a clearance to drop 25 yards out before blasting home via the underside of the crossbar.
Ronaldo ended any doubt over the result when he tapped Gary Neville's cross into an empty net five minutes from time.
Liverpool held on to third place after goals from Craig Bellamy and Xabi Alonso eked out a 2-0 win over rock-bottom Watford.
The Reds were frustrated for much of the first half by the Hornets, who almost scored against the run of play when Alhassan Bangura volleyed over with the net gaping.
But Bellamy was given an acre of space to stroke home Steven Gerrard's pass two minutes after the restart and Alonso finished off a counter-attack late on to wrap up the points.
Arsenal remained just a point behind after recovering from an early blow to thrash Blackburn 6-2 at the Emirates Stadium.
Kolo Toure's clumsy challenge on David Bentley allowed Shabani Nonda to give Rovers a third-minute lead from the spot but Gilberto headed in Robin van Persie's inswinging corner to level.
Alexander Hleb then showed fantastic footwork to put the Gunners ahead before Lucas Neill upended Van Persie and Emmanuel Adebayor made it 3-1 from the spot before half-time.
Nonda's overhead kick made it 3-2 after substitute Matt Derbyshire headed against the bar but two late Van Persie strikes and one from Mathieu Flamini gave the scoreline a flattering look.
Bolton stayed level on points with the Gunners as Nicolas Anelka returned to haunt Manchester City with a brilliant brace at Eastlands.
The French striker converted Nicky Hunt's terrific ball just eight minutes in before slotting home Henrik Pedersen's sliderule pass to seal a 2-0 success.
It got worse for City when Joey Barton was shown a straight red card late on for bringing down Abdoulaye Faye.
In-form Portsmouth staged a second-half fightback at Fratton Park to end Sheffield United's fine recent run with a 3-1 win.
Rob Hulse's fourth-minute header was the only goal of the game until Benjani's cross deflected off Phil Jagielka and Robert Kozluk to draw Pompey level shortly after half-time.
Sol Campbell then scored his first goal for the club by heading in Matt Taylor's corner before Noe Pamarot followed suit.
Second-bottom Charlton's woes continued with a 2-0 defeat at Middlesbrough, Yakubu's stabbed finish and Julio Arca's deflected finish sealing a comfortable Boro win.
Newcastle came flying out of the traps to beat Tottenham 3-1, Kieron Dyer curling a precise finish around Ledley King before Obafemi Martins headed in Scott Parker's right-wing cross.
Danny Murphy's mishit finish took a wicked deflection to get Spurs back in the game, but Paul Robinson then spilled a free-kick and Parker capitalised on a goalmouth scramble to head home before half-time.
Andrew Johnson ended his 13-game goal drought as Everton ran out 2-0 winners at Reading.
The England striker, who earned a rare apology from Chelsea boss Jose Mourinho this week, converted Mikel Arteta's low cross via a deflection off Ibrahima Sonko to put the visitors ahead.
Johnson then turned provider, robbing Ivar Ingimarsson and crossing for James McFadden to fire home from eight yards.
In the early kick-off, West Ham defender Paul Konchesky was sent off as a glut of missed chances saw their lively London derby against Fulham finish goalless at Craven Cottage.
Konchesky was given his marching orders in controversial circumstances with six minutes of normal time left after being deemed the last man in bringing down Wayne Routledge just outside the area.
Hammers striker Marlon Harewood squandered the best opportunity of the afternoon when he hit the post from six yards, while Mathew Etherington saw a shot strike the crossbar before being cleared off the line by Liam Rosenior.