Alan Pardew's first meeting with his former club since his December departure looked set to end in disappointment after Papiss Cisse gave the visitors the lead.
The striker pounced three minutes from half-time with a powerful header after superb work from team-mate Daryl Janmaat on the flank.
But Campbell netted the equaliser midway through the second period when he finished off a cross from substitute Yannick Bolasie.
Willian struck a dramatic 89th-minute winner as Chelsea maintained their seven-point lead at the top of the Barclays Premier League with a 1-0 win over Everton at Stamford Bridge.
Jose Mourinho's men looked set to be frustrated in their bid to break down their dogged opponents until a fractious encounter exploded into life in the dying seconds.
Nemanja Matic thought he had netted the winner moments earlier but his shot deflected in off team-mate Branislav Ivanovic, who was in an offside position.
As tempers flared Gareth Barry was sent off for a trip on Willian before the Brazilian picked himself up to volley the only goal of the game past a despairing Tim Howard.
Mourinho's men had ridden their luck with former Chelsea star Romelu Lukaku missing a glorious chance to put Everton in front in the 69th minute when he fired straight at Petr Cech from point-blank range.
Willian's winner was a blow to title rivals Manchester City who must have thought they had done enough to reduce the deficit as they ultimately coasted to a 4-1 win at Stoke.
The visitors had to survive some scary moments in the early stages with James Milner appearing to handle in the box then Peter Crouch seeing an effort disallowed for offside.
Sergio Aguero opened the scoring in the 33rd minute with his first goal since his return from a knee injury, only for Crouch to equalise five minutes later following a brilliant cross from Marko Arnautovic.
But City oozed class after the break with Milner heading home a cross from Samir Nasri in the 55th minute to put his side back in front, then Aguero making the game safe with a 70th minute penalty.
Nasri capped a fine individual display with City's fourth in the 76th minute before Manuel Pellegrini's men were hit with the disappointing news from west London.
Louis Van Gaal survived a scare before Manchester United moved up to third in the table with a 3-1 win over Burnley at Old Trafford.
Chris Smalling put United in front after six minutes less than half a minute after coming on to replace the injured Phil Jones.
But after Michael Keane and Michael Kightly had both missed good chances, Danny Ings equalised with a superb diving header with 12 minutes on the clock.
Smalling added his unlikely second in first half injury time but the Clarets were still looking dangerous and were only denied a second equaliser when United keeper David De Gea brilliantly denied Ings.
United wrapped up the points eight minutes from time when Robin van Persie converted from the spot after Scott Arfield fouled Angel di Maria in the box.
Southampton dropped behind United to fourth after being held 0-0 by 10-man West Ham at St Mary's Stadium.
The visitors played the last half-hour with 10 men after keeper Adrian was sent off for handling outside the box under pressure from Sadio Mane.
Mane and Graziano Pelle both missed good chances for Saints as Sam Allardyce's men held on after almost constant second half pressure.
Record signing Brown Ideye scored his second goal in two games as West Brom continued to make progress under Tony Pulis with a 2-0 win over Swansea.
Ideye - almost shipped out during the January transfer window - fired home on the hour mark before turning provider to set up Saido Berahino for the second to seal the points.