Rangers, who would have sealed promotion with victory in Wales, fell behind to Jay Bothroyd (six) and Craig Bellamy (35), but the sublime Taarabt equalised in the 10th and 71st minutes.

Heidar Helguson passed up a clear chance to snatch the win for QPR in the closing stages.

Neil Warnock's side face Hull at home on Monday when they can confirm their promotion, pending a hearing into their signing of Alejandro Faurlin.

Cardiff now sit a point behind second-placed Norwich with just three matches remaining.

Swansea began the day fifth and lacked dynamism in a goalless draw away to Portsmouth at Fratton Park, passing up the chance to capitalise on Reading's draw at Leeds last night.

Hull threw away the chance to build on their play-off push as Middlesbrough came from behind to win 4-2.

Jay Simpson put the hosts 1-0 up in the third minute at the KC Stadium before Scott McDonald (11) equalised.

McDonald scored again for Boro two minutes later and Julio Arca (26) made it 3-1. McDonald completed his hat-trick in the 45th minute as the Tigers collapsed, Anthony Gerrard's 69th-minute goal hardly any consolation.

Sheffield United kept their slim survival hopes alive after beating Bristol City 3-2 in an entertaining game at Bramall Lane.

Steve Simonsen's mistake gave the Blades the early lead, but Lee Williamson and David McAllister scored within three minutes of each other before the break in a frantic spell which also saw City's Nicky Maynard sent off for a foul on Matthew Lowton.

It was 2-2 when Harry Maguire brought down Jon Stead and was sent off before Brett Pitman converted the penalty, but Jordan Slew volleyed a winner five minutes from time.

Chris Eagles scored twice as Burnley won 4-2 at Derby.

The Rams led twice through Theo Robinson and Jamie Ward but both times Eagles equalised, the second time on the rebound from his own saved penalty. That incident saw Ward sent off for bringing down Tyrone Mears.

The Clarets pushed on from there, though, as Wade Elliott and Chris McCann quickly got in on the act to earn their side the win.

At Vicarage Road, John Eustace's second-minute goal earned Watford a 1-0 win at home to Barnsley.

(re-opens)

Phil Brown's bid to save Preston from relegation was dealt a blow as Millwall kept alive their play-off hopes with a 4-0 victory.

Lions defender Darren Purse headed the hosts in front in the 42nd minute and Josh McQuoid added a second two minutes later.

John Marquis and James Henry with a penalty sealed the rout after the break.