Arsenal can move back to the top of the Premiership after leaders Manchester United were beaten late one by West Ham at Upton Park.
The champions took the lead in the 14th minute thanks to a Ronaldo header from a Patrice Evra cross, but it was the home side who were creating the chances and United had little until their goalscorere missed from the spot in the second half.
That would have killed it but after the Portuguese drilled it wide of Robert Green's right-hand post the Hammers struck twice from set-pieces, first though Anton Ferdinand and then via the head of his defensive partner Matthew Upson.
Not all the drama was confined to the east end of London, however, because in the north Tottenham put six past Reading but were made to work for their points by Steve Coppell's side who scored four of their own.
Spurs striker Dimitar got four of his own as well as he almost single handedly dragged the homeside back into the game. The Bulgarian gave Spurs the lead after seven minutes, but they were pegged back by goals from Kalifa Cisse and Ivar Ingimarsson.
Berbatov equalised in the 63rd minute but Spurs found themselves behind again when Dave Kitson netted the first of two.
The Spurs hitman levelled again with his third before Kitson made it four all after 74 minutes.
Steed Malbranque and Jermain Defoe finally got in on the act before Berbatov had the last laugh with his fourth in the 83rd minute.
Injury-hit Chelsea closed to within four points of top spot with a battling 2-1 win over Newcastle.
Michael Essien gave the home side a half-time lead when he swept home from six yards shortly before the half-hour mark but Nicky Butt levelled when he eventually bundled home Charles N'Zogbia's cross at the second attempt.
However, Salomon Kalou scored a controversial winner three minutes from time after the ball deflected through to him, Newcastle appealing for offside.
Sunderland hauled themselves out of the drop zone with a 3-1 victory against Bolton.
Kieran Richardson, who only returned from a four-month injury lay-off on Boxing Day, scored his first goal for the club when he blasted the ball past Jussi Jaaskelainen following brilliant work from Kenwyne Jones.
The roles were reversed when Jones powered home a header from Richardson's corner.
El-Hadji Diouf halved the deficit before half-time when his flighted free-kick evaded everyone and curled into the net but Sunderland substitute Daryl Murphy kept his composure in stoppage-time to seal the win.
Fulham dropped to second bottom after Sebastian Larsson handed Birmingham a 1-1 draw at St Andrews.
Carlos Bocanegra's eighth-minute header put the visitors ahead in Ray Lewington's final match as caretaker boss.
But Blues equalised after the interval when Larsson latched on to Fabrice Muamba's through ball before his finish deflected in off Elliot Omozusi. Hameur Bouazza was then sent off for a second yellow card.
Wigan replaced Sunderland in the bottom three after Aston Villa staged a second-half fightback at the JJB Stadium.
Titus Bramble notched his first Latics goal with a bullet header from Ryan Taylor's pinpoint corner in the 28th minute but Curtis Davies marked his first Premier League start for Villa with his first goal for the club, heading in Gareth Barry's corner after the break.
Gabriel Agbonlahor then flicked a header past Chris Kirkland to complete the turnaround.
Tuncay Sanli's fourth goal in the last six games handed Middlesbrough a 1-0 victory at Portsmouth.
The Turk tapped into an empty net after David James parried Gary O'Neil's volley from Stewart Downing's inswinging cross.