James McClean opened the scoring with his sixth goal of the season as Stoke boosted their Championship  survival hopes with a 3-1 win at home to relegation rivals Charlton.

The Potters went ahead in the 28th minute when McClean tapped home at the back post after Nick Powell headed a Sam Clucas corner into his path.

Tom Ince and Powell both scored second-half goals to earn the three points and stretch City's unbeaten home run to six matches in the Sky Bet Championship.

Derby secured their first away win since the opening day of the season thanks to Tom Lawrence's late strike which helped them to a 3-2 victory over Swansea.

Martyn Waghorn's first-half tap-in was cancelled out by two goals in two minutes from Yan Dhanda and Kyle Naughton after the interval.

But Phillip Cocu's side rallied with goals from Duane Holmes and Wales international Lawrence to snatch only their second win on the road all season.

The result moved Stoke one point above their opponents, who are one place and four points above the bottom three.

Mallik Wilks struck eight minutes from time to rescue a point for Hull in a scrappy 1-1 draw against Reading at Madejski Stadium.

Jordan Obita had put the Royals on course for a first victory in six Sky Bet Championship matches but Wilks' deflected effort left Mark Bowen's side frustrated.

The point ended Hull's run of four successive defeats as they bounced back from last weekend's 5-1 hammering at home to Brentford.

Lee Tomlin was on the mark for Cardiff

Lee Tomlin scored the only goal of the game as Cardiff gave their play-off hopes a major boost by winning 1-0 at bottom side Luton.

Tomlin decided the contest with 17 minutes to go, winning it for the visitors when his effort from just outside the box nestled into the bottom corner.

Victory was enough for the Bluebirds to climb up to eighth in the table, just four points behind the top six.

Huddersfield recorded a vital 2-0 win over QPR to move six points clear of the relegation places.

Both of Town's goals came within the space of four second-half minutes, with Elias Kachunga scoring the opener and then winning the penalty for the second, which Steve Mounie put away.

For QPR, this was a third straight league loss and they now sit just three points above the Terriers.

Aleksandar Mitrovic's 20th goal of the season was enough to give Fulham a 1-0 win at Blackburn.

The Serbian's powerful turn and shot midway through the second half broke the stubborn resistance of the hosts, whose 10-match unbeaten run at home - stretching more than four months - was ended.

In truth, Scott Parker's side controlled the majority of the game without creating a raft of clear-cut chances, save for a frantic last 15 minutes when Blackburn had four strikers on the pitch.

Barnsley and Sheffield Wednesday shared the points at Oakwell with a 1-1 draw in a gripping South Yorkshire derby.

Wednesday new-boy Josh Windass had put the Owls in front on his debut before a calamitous Cameron Dawson mistake gifted Cauley Woodrow the equaliser.

Ollie Watkins scored a late winner

Ollie Watkins struck three minutes from time as Brentford maintained the pressure on the top two in the  with a 3-2 win over Middlesbrough in a pulsating clash at Griffin Park.

Watkins grabbed his 20th of the season to add to goals from Julian Jeanvier and Bryan Mbeumo to finally end the dogged resistance of a Boro side who levelled twice through Lewis Wing and Ashley Fletcher.

In the day's early kick-off Preston moved back into the top six of after a hard-fought but ultimately deserved 2-1 derby victory at Wigan, who remain in the bottom three.

The visitors were in front inside seven minutes at the DW Stadium through Tom Barkhuizen, after a good cross from Daniel Johnson. And Johnson himself doubled the lead four minutes after the restart with a low shot from 12 yards.

Wigan only really sparked into life following the arrival of substitute Joe Gelhardt, who immediately set up a goal for Chey Dunkley in the 57th minute.