Campbell headed the visitors into the lead at Molineux after 20 minutes, steering the ball home from close range – and he made it 2-0 on 67, getting on the end of an assist from Craig Bellamy.
There was a glimmer of hope for the hosts when Bakary Sako reduced the deficit on 70 minutes, slamming an 18-yard free-kick into the net.
But Malky Mackay’s table-toppers held on for a 22nd league win of the season which left Wolves in 22nd place, two points below nearest rivals Barnsley.
The opening exchanges saw a flurry of long-range efforts, with Aron Gunnarsson and Peter Whittingham failing to trouble Carl Ikeme before Bjorn Sigurdarson flashed a 25-yard strike just wide for the hosts.
Wolves matched Cardiff’s high tempo – but fell behind on 20 when Gunnarsson’s long throw was flicked into the path of Campbell and his header from six yards out gave Ikeme no chance.
There were some signs of promise for Wolves, with Sigurdarson tricking his way down the left and providing a cross for Sako, who headed just wide before wasting his side’s best chance of the half, miscuing wide when well placed.
Dean Saunders made a bold double change at the break, introducing Sylvan Ebanks-Blake and Kevin Doyle in place of Tongo Doumbia and Danny Batth.
But within a couple of minutes of the restart, City had the ball in the net but Bellamy’s effort from Ikeme’s fumble was ruled out for offside.
There was no linesman’s intervention when Campbell headed in Bellamy’s cross after 67 minutes and it looked as though Cardiff had the points in the bag.
A deflected free-kick from Sako three minutes later following Ben Turner’s foul on Doyle gave Wolves hope.
But even that soon disappeared as the clock ticked down and Ebanks-Blake spurned their final chance to take something from the game when his shot from Sako’s cross bounced off the turf and over the bar.