John O'Shea scored his first club goal in four years and Aiden McGeady slammed home a penalty as Sunderland climbed off the bottom of the Championship table with a stunning 4-1 win at promotion-chasing Derby 4-1.

Chris Coleman's team ended a 10-match winless run with first-half goals from George Honeyman and Ashley Fletcher setting them on their way before Matej Vydra replied with his 18th Championship goal of the season.

But Derby never looked like ending their seven-game run without a victory as McGeady's spot-kick and an  O'Shea close-range finish boosted Sunderland's chances of avoiding relegation.

O'Shea, 36, said on Thursday that he has no intention of hanging up his boots and will play on next season - even of that means moving clubs. The Waterford man was the toast of the north-east tonight though, with a goal that gives the Black Cats hope of avoiding a disastrous drop to League One. They are second from bottom, three points off safety.

Wolves moved closer to a Premier League return as they survived the dismissal of two players to claim a 2-1 win at Middlesbrough.

Nuno Espirito Santo's side need just three more wins to guarantee promotion after first-half goals from Helder Costa and Ivan Cavaleiro secured them a dramatic win at the Riverside.

The visitors were reduced to nine men with 19 minutes left as Matt Doherty was sent off for two bookable offences, a quarter-of-an-hour after Ruben Neves was also dismissed for picking up two bookings in the space of three minutes.

Middlesbrough spent the closing stages of the game camped in the Wolves box, but while Patrick Bamford scored in the fourth minute of stoppage time, they were unable to claw their back to level terms. As a result, they remain in the final play-off position, with their superior goal difference keeping them ahead of seventh-placed Bristol City.

Cardiff closed to within three points of Sky Bet Championship pacesetters Wolves after beating relegation-battlers Burton 3-1 on Good Friday to extend their winning run to eight games.

Kenneth Zohore, Nathaniel Mendez-Laing and Callum Paterson all scored for the hosts, while Darren Bent was on target for Burton.

Zohore put Cardiff ahead after 16 minutes, rifling in following good work from Junior Hoilett out wide.

Burton, who sit 23rd in the table, hit back five minutes later through Bent but the hosts were back in front before the break as Mendez-Laing found the net in first-half stoppage time.

The Bluebirds extended their advantage in the 64th minute when Paterson scored his fourth goal of the month to make sure of the points.

Shaun Williams scored after just 27 seconds as Millwall beat Nottingham Forest 2-0 in the early kick-off to maintain their play-off push.

The win extends the Lions' unbeaten run to 13 league matches and takes them within one point of the top six with seven matches remaining.

Williams' first-minute header put Neil Harris' men in charge before Lee Gregory's 10th goal of the season doubled their advantage before the break.

Quickfire goals from Stefan Johansen and Tom Cairney in the second half inspired third-place Fulham to a 2-0 win at Norwich.

Meanwhile, Bristol City missed the chance to break into the play-off spots but claimed a share of the spoils in their 2-2 draw with struggling Barnsley thanks to Josh Brownhill's late goal.

Kieffer Moore headed 21st-place Barnsley ahead after seven minutes but City were back on terms in the 31st minute through Famara Diedhiou.

Moore was involved again as Barnsley regained the lead in the 78th minute as his cross was turned home in style by Brad Potts.

But Brownhill headed the away side level in added time.

Sheffield United and Brentford both had a man sent off as they drew 1-1 at Griffin Park.

Chris Basham put the Blades in front 10 minutes into the second half, only for Chris Mepham to level things up 13 minutes later.

And immediately after Mepham's equaliser, United goalkeeper Jamal Blackman and Ryan Woods were shown straight red cards for clashing as the Brentford man attempted to grab the ball.

Atdhe Nuhiu netted a brace as Sheffield Wednesday beat play-off hopefuls Preston 4-1.

Irish pair Alan Browne and Sean Maguire started for the Lilywhites, with Greg Cunningham on the bench, but it was a bad day at the office as their playoff hopes took a hit.

Lucas Joao and fit-again Fernando Forestieri were also on the scoresheet for the Owls, while Louis Moult scored for the visitors.

Caleb Ekuban and Pablo Hernandez scored for Leeds as they beat Bolton 2-1.

Adam Le Fondre's second-half effort kept the visitors in the game but Leeds managed to hold on to seal all three points.