Ismaila Sarr's penalty early in the first half proved to be just enough to earn Watford a 1-0 victory over Millwall and confirm promotion back to the Premier League at the first attempt.

Brentford's win at Bournemouth earlier in the day meant that only three points would be good enough for Xisco Munoz's Hornets to be promoted alongside Norwich, who came down with them last season.

Millwall came close on a number of occasions to delaying a promotion party that traditionally sees Hornets fans jump in a town centre pond, but Watford hung on.

Bryan Mbeumo came off the bench to snatch a late winner as 10-man Brentford beat promotion rivals Bournemouth 1-0 to seal their place in the play-offs.

Mbeumo's goal 13 minutes from time was enough to earn Brentford only their second win in eight games despite the sending off of captain Pontus Jansson early in the second half.

Bournemouth, looking for a club-record-equalling eighth straight league win, lacked their usual attacking spark and managed only one shot on target.

Bryan Mbeumo turns away after his late winner

Norwich, who are already promoted, beat QPR 3-1 to remain five points ahead of Watford with two games to play.

Left-back Xavi Quintilla gave the Canaries an early lead and, three minutes after Lyndon Dykes had a penalty saved by Tim Krul, right-back Max Aarons made it 2-0.

Dykes cut the deficit in the 71st minute but Emiliano Buendia restored the two-goal cushion with nine minutes left.

Two points cover the four play-off places after Barnsley beat Rotherham 1-0 thanks to Carlton Morris' controversial early goal.

The striker scored from a corner when he appeared to impede the goalkeeper as he jumped to connect with the ball.

Swansea can secure play-off places for themselves, Bournemouth and Barnsley by avoiding defeat against Reading on Sunday.

At the other end of the table, Republic of Ireland midfielder Alan Browne's penalty earned Preston a 1-0 win at Coventry while Chris Hughton's Nottingham Forest and Stoke drew 1-1.

Wycombe's relegation was all but confirmed after a 2-1 loss at Mick McCarthy's Cardiff.

Alan Browne celebrates with Emil Ris Jakobsen after he scores his penalty

Joe Jacobson's penalty was sandwiched by Kieffer Moore's brace to leave Wanderers six points adrift of safety with two games to go and needing a 13-goal swing.

That they are still mathematically in it is down to Derby's 2-1 defeat at home to Birmingham. Colin Kazim-Richards gave the Rams the lead but Lukas Jutkiewicz's double secured Birmingham's survival and left Wayne Rooney's side just four points ahead of Rotherham, who have two games in hand.

Sheffield Wednesday are also four points adrift, without the solace of games in hand, after losing 3-1 at Middlesbrough. Yannick Bolasie's opener was cancelled out by Josh Windass' penalty but Josh Coburn and Duncan Watmore secured victory for Boro.

Adam Armstrong scored a hat-trick as Blackburn demolished Huddersfield 5-2. Blackburn's leading marksman moved to 24 league goals for the season and Ben Brereton and Sam Gallagher also scored, with Ryan Nyambe's own goal and Josh Koroma's strike mere consolation for the Terriers who are still within range of Rotherham.