Cardiff missed two stoppage-time penalties as Wolves soared nine points clear at the top of the Sky Bet Championship.

Ruben Neves scored the only goal in a 1-0 win when an inch-perfect free-kick gave Wolves their advantage in the Welsh capital.

But in one of football's most dramatic finishes, Wolves goalkeeper John Ruddy stretched to stop Gary Madine's spot-kick, before they were handed a second bite at the cherry.

Junior Hoilett stepped up and crashed the ball against the bar to allow Wolves to move a giant step closer to promotion to the Premier League.

Sol Bamba had a chance to give Cardiff an early lead in front of the club's largest home attendance since 1976, with 29,317 supporters watching on.

The centre-back climbed highest in the box to meet Hoilett's cross but watched his glancing header go just wide.

Bamba put his side in danger moments later when his wayward header opened the door for Neves to test Neil Etheridge with a swerving shot from distance.

The pressure was mounting on the Bluebirds and it took another reaction save to deny Diogo Jota after Leo Bonatini had an effort blocked by Sean Morrison.

There was still time for Yanic Wildschut to force Ruddy into a fingertip save from a free-kick as an entertaining first half ended without a goal.

Wolves were inches away from finding a breakthrough four minutes into the second half when Benik Afobe steered the ball around the corner for Bonatini to beat the offside trap and go around Etheridge.

The Brazilian thought he had spotted enough space to squeeze a shot past the scrambling defence but his side-footed effort clipped the upright to take it away from danger.

The table-toppers began to assert their dominance and forced Cardiff into a pair of costly fouls.

Lee Peltier pulled Afobe back to go into the book, but Neves sent his free-kick flying high and wide. But it proved to be the sighter he needed.

Morrison proceeded to scythe Jota down and the Portugal international curled the set-piece over the wall and into the back of the net after 67 minutes.

The result looked to have been decided until Madine was shoved in the back by Conor Coady to earn a penalty, but Ruddy was equal to the striker's low shot when he stepped up to take it himself.

There was still time for Aron Gunnarsson to charge into the box and be brought down by Ivan Cavaleiro, but Hoilett hit the bar.