Manchester United ended 2012 with a seven-point lead in the title race on a dramatic day in the Premier League, as Manchester City edged out Norwich City in a thriller at Carrow Road.
Arsenal prevailed 7-3 against Newcastle United in a staggering game at Emirates Stadium, while Tottenham Hotspur climbed to third and Swansea City returned to winning ways against Fulham.
At the bottom of the table there were crucial victories for Reading and Wigan Athletic as Aston Villa suffered another demoralising defeat, while Southampton dropped into the relegation zone after drawing with Stoke City.
Edin Dzeko inspired Manchester City as they bounced back from their loss to Sunderland with a pulsating 4-3 win away to Norwich.
Dzeko gave Man City the perfect start with two calm finishes inside the opening five minutes, first guiding a shot into the bottom corner after being played in by David Silva and then side-footing home a second after Sergio Aguero had dragged Mark Bunn out of position.
Norwich hit back after 15 minutes when Anthony Pilkington's free-kick took a crucial deflection off the defensive wall to beat a wrong-footed Joe Hart, and the match was left on a knife-edge on the stroke of half-time when Samir Nasri was harshly sent off after squaring up to Sebastien Bassong following a foul by the Canaries centre-back.
City re-established their two-goal advantage early in the second half when Aguero dinked a sublime chip over Bunn following a raking long ball from Yaya Toure, only for Russell Martin to respond for Norwich and make it 3-2.
City grabbed a fourth when Dzeko's fierce shot was fumbled by Bunn at his near post, but Martin's second of the game ensured a nervy finish as City clung on for three vital points.
Manchester United remain seven points ahead after a hard-fought 2-0 triumph at home to West Bromwich Albion.
The crucial moment arrived in the ninth minute when Gareth McAuley stuck out a leg to try and block Ashley Young's low cross and only succeeded in turning the ball past his own goalkeeper.
United carved out opportunities to make their afternoon more comfortable but could never shake off their resilient opponents and had to wait until the 90th minute to add a second as substitute Robin van Persie struck in sensational style.
Theo Walcott scored a hat-trick as Arsenal raced away from Newcastle in the closing stages of a remarkable clash at Emirates Stadium to run out 7-3 winners.
Walcott broke the deadlock with a finish reminiscent of the watching Thierry Henry, only for Demba Ba's deflected free-kick to draw Newcastle level at half-time.
The game exploded into life after the break as Alex Oxlade-Chamberlain's goal was cancelled out before the hour mark by Sylvain Marveaux, and then Jack Wilshere set up Lukas Podolski to make it 3-2 to the Gunners.
Newcastle equalised for a third time thanks to a shot by Ba after good work from Marveaux, but the finale was one-way traffic as Arsenal ran riot.
Walcott rifled in a fourth after a scramble in the Newcastle area, and Olivier Giroud scored twice in quick succession just after coming on as a substitute.
The last word went to Walcott, though, as he wriggled away from a couple of challenges and regained his footing after being knocked to the ground, to put the gloss on an extraordinary performance.
Tottenham boosted their UEFA Champions League hopes by coming from behind in the day's early kick-off to beat Sunderland 2-1 at the Stadium of Light.
John O'Shea put the Black Cats ahead against the run of play on 40 minutes when he pounced on a rebound after Steven Fletcher had been denied by Hugo Lloris, but a two-goal blitz early in the second half turned the game decisively on its head.
Carlos Cuellar inadvertently headed a corner into his own net to draw Spurs level, and Aaron Lennon then showed great determination to capitalise on a slice of good fortune and grab the winner.
Aston Villa's dismal form continued, and the pressure on manager Paul Lambert increased, as they slipped closer to the bottom three following a 3-0 defeat at home to Wigan Athletic.
Having conceded 12 goals in their past two games Villa would have been determined to make a solid start, but they fell behind after just three minutes as Ivan Ramis lost his marker far too easily to head Wigan in front.
Emmerson Boyce swept in a second for Wigan on 52 minutes following a flowing attack, and Arouna Kone took advantage of more poor defending to slot in a third from a tight angle and send the Villa fans heading for the exits with half an hour still to play.
Southampton fell into the drop zone after being pegged back to 3-3 by Stoke City in an exciting clash at the Britannia Stadium.
Forced into two changes at the back, Stoke's vaunted defence was breached after ten minutes when Guly do Prado's delightful cross to the back post was expertly steered in by Rickie Lambert.
Kenwyne Jones quickly equalised with a superb improvised finish as he flicked in a low cross from Ryan Shotton, but Jay Rodriguez restored Southampton's advantage after Robert Huth's attempted interception of a Lambert cross cannoned into the crossbar.
Andy Wilkinson's own goal gave Saints a cushion going into half-time, but Stoke rallied after the interval and closed the deficit when Matthew Upson forced in a shot.
Steven N'Zonzi's dismissal for a foul on Jack Cork left Southampton with an extra man for the closing stages, but Cameron Jerome's blistering piledriver from distance in the 90th minute extended Stoke's unbeaten run to ten games.
Reading pulled three points clear of bottom-placed Queens Park Rangers as they beat West Ham United 1-0 in a scrappy affair to claim only their second win of the season.
Pavel Pogrebnyak proved to be the match-winner as he seized on a poor back-pass from James Collins to tuck a neat shot beyond Jussi Jaaskelainen after five minutes.
Swansea ended a run of four matches without a win as they defeated Fulham 2-1 at Craven Cottage.
There have been suggestions that Swansea may be too reliant on Michu for their goals this season but, with the Spaniard missing through injury, Danny Graham took up the mantle and blasted in an opener from close range after Fulham had failed to deal with a Nathan Dyer shot.
Jonathan de Guzman made it 2-0 to the Swans after David Stockdale's awful clearance presented him with the sort of glorious chance that could have been gift-wrapped for Christmas.
Bryan Ruiz reduced Fulham's arrears following a goalmouth scramble but the home side could not find an equaliser.