Rotherham will play Leyton Orient in the League One play-off final after coming from behind to beat Preston.

Following a 1-1 draw in the first leg, Paul Gallagher's free-kick gave the visitors the lead, but headers from Wes Thomas and Lee Frecklington put the Millers in front at the break.

The excellent Ben Pringle hit the bar for the hosts before Kieran Agard sealed it from close range.

Rotherham now have the chance to achieve back-to-back promotions.

The tie was evenly poised following the first meeting at Deepdale but Simon Grayson's side took the lead for the first time in the 16th minute when Gallagher's free-kick from the left was missed by everyone and bounced high into the roof of the Rotherham net.

Play-off pointers

  • No luck in the ninth. Preston have now been unsuccessful in all nine of their play-off campaigns.
  • Déjà vu? The last time the Millers gained promotion from the Football League's bottom division in 1999-00 they went straight through the third tier the next season.

The Millers came close to an immediate reply but Lilywhites keeper Declan Rudd reacted brilliantly to keep out Kari Arnason's header from Pringle's whipped set piece.

It was from another Pringle free-kick that the home side equalised. Scott Wiseman pushed Alex Revell to the ground needlessly and the former Derby man's powerful delivery was met on the run by Thomas to give Rudd no chance.

Pringle was at the heart of much of the home side's play and he picked up his second assist of the night when his centre was superbly headed home by Frecklington from just inside the penalty area with 34 minutes gone.

Despite ending an enthralling half comfortably on top, Rotherham could still have gone in only level at the break.

Home keeper Adam Collin spilled John Welsh's long-range shot just wide of a post and, from the resultant corner, Joe Garner's glancing header went across the face of goal.

Simon Grayson

Preston manager Simon Grayson was unable to improve his club's wretched play-off record.

Rotherham ended the regular league season having scored just two goals fewer than champions Wolves and they came close to a third of the night when Pringle's half-volley came back off the crossbar.

Preston spurned chances when Garner blasted over from a Gallagher cross and the winger headed wide when well placed, before former Everton forward Agard effectively ended the game as a contest.

Frecklington played a well-weighted chipped pass down the line for James Tavernier and the Newcastle loanee showed excellent control and poise before rolling a ball inside for Agard to convert his 26th goal of the season.

The deflated visitors pushed on in search of a route back into the game and both Jack King and Garner saw deflected efforts from outside the area hit a post.

But Steve Evans' side saw out six minutes of injury time to consign the Lancashire side to a fourth consecutive season in the third tier.

Preston boss Simon Grayson: "Football is about fine margins and things have not gone our way today.

"We've hit the post twice and both times it has gone out to one of their players. We didn't have much luck but we've lost to a fine team.

"The lads can be proud because they've had an excellent season. The football club is progressing and there is no doubt about that."

Rotherham boss Steve Evans: "It feels wonderful because we were many peoples' favourite to go back down at the start of the season.

"I think over the two legs we deserved to win the tie. It's my job to make sure we enjoy this tonight but tomorrow our focus will turn to Leyton Orient.

"We go to Wembley as the underdogs because they led the table for many months."

Lineup, Bookings (5) & Substitutions (6)

Rotherham United

  • 21 Collin Booked
  • 27 Tavernier
  • 03 Skarz
  • 08 Frecklington (Milsom - 92' )
  • 20 Morgan
  • 04 Arnason
  • 22 Agard (O'Connor - 95' )
  • 36 Smallwood
  • 09 Revell
  • 26 Thomas Booked (Vuckic - 87' )
  • 18 Pringle

Substitutes

  • 01 Shearer
  • 05 Davis
  • 10 O'Connor
  • 15 Milsom
  • 28 Vuckic
  • 31 Rowe
  • 35 Hitchcock

Preston North End

  • 23 Rudd
  • 32 Wiseman (Humphrey - 53' )
  • 16 Buchanan
  • 06 Wright Booked
  • 22 King
  • 05 Clarke
  • 19 Welsh (Brownhill - 68' )
  • 37 Kilkenny
  • 09 Davies Booked
  • 14 Garner
  • 12 Gallagher Booked (Beavon - 77' )

Substitutes

  • 01 Stuckmann
  • 02 Keane
  • 03 Laird
  • 07 Humphrey
  • 10 Beavon
  • 11 Holmes
  • 30 Brownhill
Ref: Keith Stroud
Att: 11,576

Match Stats

Shots

16 20

On target

5 3

Corners

5 3

Fouls

12 14

Live Text Commentary

Full time

Full Time Match ends, Rotherham United 3, Preston North End 1.

90:00 +7:44 Full time

Full Time Second Half ends, Rotherham United 3, Preston North End 1.

90:00 +7:18

Foul by Bailey Wright (Preston North End).

90:00 +7:18

Alex Revell (Rotherham United) wins a free kick in the attacking half.

90:00 +6:16

Delay over. They are ready to continue.

90:00 +5:38

Delay in match (Preston North End).

90:00 +4:35

Attempt missed. David Buchanan (Preston North End) left footed shot from outside the box is close, but misses the top left corner.

90:00 +4:07 Substitution

Substitution Substitution, Rotherham United. Michael O'Connor replaces Kieran Agard.

90:00 +3:16

Attempt saved. Alex Revell (Rotherham United) right footed shot from the right side of the box is saved in the centre of the goal. Assisted by Robert Milsom.

90:00 +2:54

Attempt blocked. Stuart Beavon (Preston North End) left footed shot from outside the box is blocked. Assisted by Kevin Davies with a headed pass.

90:00 +2:15

Jack King (Preston North End) wins a free kick in the attacking half.

90:00 +2:15

Foul by Kári Arnason (Rotherham United).

90:00 +1:10 Substitution

Substitution Substitution, Rotherham United. Robert Milsom replaces Lee Frecklington.

90:00 +0:29

Attempt missed. Josh Brownhill (Preston North End) right footed shot from outside the box is too high from a direct free kick.

89:37

Neil Kilkenny (Preston North End) wins a free kick in the attacking half.

89:37

Foul by Ben Pringle (Rotherham United).

88:02

Attempt missed. Bailey Wright (Preston North End) left footed shot from outside the box is too high. Assisted by Josh Brownhill.

86:48 Substitution

Substitution Substitution, Rotherham United. Haris Vuckic replaces Wes Thomas.

85:32

Neil Kilkenny (Preston North End) wins a free kick on the left wing.

85:32

Foul by Kieran Agard (Rotherham United).

84:20

Hand ball by Kevin Davies (Preston North End).

81:50

Attempt missed. Kieran Agard (Rotherham United) header from the centre of the box misses to the right. Assisted by Ben Pringle with a cross following a set piece situation.

81:26

Foul by Jack King (Preston North End).

81:26

Alex Revell (Rotherham United) wins a free kick on the left wing.

80:39

Attempt saved. Bailey Wright (Preston North End) header from the centre of the box is saved in the centre of the goal. Assisted by Neil Kilkenny with a cross.

80:11

Hand ball by Kieran Agard (Rotherham United).

80:02

Attempt blocked. Joe Garner (Preston North End) right footed shot from outside the box is blocked. Assisted by Kevin Davies.

79:34

Delay over. They are ready to continue.

78:23

Delay in match Kári Arnason (Rotherham United) because of an injury.

77:55

Attempt missed. Kári Arnason (Rotherham United) header from the centre of the box is close, but misses to the left. Assisted by Ben Pringle with a cross following a corner.

77:26

Corner, Rotherham United. Conceded by Josh Brownhill.

76:29 Substitution

Substitution Substitution, Preston North End. Stuart Beavon replaces Paul Gallagher.

74:30

Joe Garner (Preston North End) wins a free kick in the attacking half.

74:30

Foul by Kári Arnason (Rotherham United).

73:42

Foul by Paul Gallagher (Preston North End).

73:42

James Tavernier (Rotherham United) wins a free kick on the right wing.

72:43

Attempt missed. Josh Brownhill (Preston North End) right footed shot from outside the box is too high.

72:26

Attempt blocked. Jack King (Preston North End) right footed shot from more than 35 yards is blocked. Assisted by Joe Garner.

71:39

Attempt missed. Ben Pringle (Rotherham United) left footed shot from the right side of the box is close, but misses to the left. Assisted by Lee Frecklington.

70:32 Booking

Booking Paul Gallagher (Preston North End) is shown the yellow card for a bad foul.

70:27

Foul by Paul Gallagher (Preston North End).

70:27

James Tavernier (Rotherham United) wins a free kick on the right wing.

69:54 Booking

Booking Adam Collin (Rotherham United) is shown the yellow card.

69:40 Booking

Booking Wes Thomas (Rotherham United) is shown the yellow card.

69:26

Foul by Paul Gallagher (Preston North End).

69:26

Kieran Agard (Rotherham United) wins a free kick in the defensive half.

68:57

Tom Clarke (Preston North End) wins a free kick in the defensive half.

68:57

Foul by Alex Revell (Rotherham United).

67:41 Substitution

Substitution Substitution, Preston North End. Josh Brownhill replaces John Welsh.

66:12 Goal scored

Goal! Goal! Rotherham United 3, Preston North End 1. Kieran Agard (Rotherham United) right footed shot from the centre of the box to the bottom left corner. Assisted by James Tavernier.

65:10

Foul by Joe Garner (Preston North End).

65:10

Craig Morgan (Rotherham United) wins a free kick in the defensive half.

62:30

Foul by Bailey Wright (Preston North End).

62:30

Alex Revell (Rotherham United) wins a free kick in the attacking half.

61:54

Attempt missed. Paul Gallagher (Preston North End) header from the centre of the box misses to the right. Assisted by Chris Humphrey.

59:00

Corner, Rotherham United. Conceded by Declan Rudd.

58:55

Attempt blocked. Kieran Agard (Rotherham United) right footed shot from the right side of the box is blocked. Assisted by Alex Revell with a headed pass.

56:24

Attempt missed. Alex Revell (Rotherham United) header from the left side of the six yard box is just a bit too high. Assisted by Ben Pringle with a cross following a corner.

55:46

Corner, Rotherham United. Conceded by Bailey Wright.

55:07

Attempt blocked. Wes Thomas (Rotherham United) header from the centre of the box is blocked. Assisted by James Tavernier with a cross.

53:52

Attempt missed. Joe Garner (Preston North End) left footed shot from the left side of the box is too high. Assisted by Paul Gallagher.

52:51 Substitution

Substitution Substitution, Preston North End. Chris Humphrey replaces Scott Wiseman.

51:53

Attempt missed. David Buchanan (Preston North End) right footed shot from the centre of the box is close, but misses to the left.

49:45

Hand ball by Wes Thomas (Rotherham United).

49:15

Ben Pringle (Rotherham United) hits the bar with a left footed shot from outside the box.

47:40

Delay over. They are ready to continue.

46:20

Delay in match Joe Skarz (Rotherham United) because of an injury.

45:59 Booking

Booking Kevin Davies (Preston North End) is shown the yellow card for a bad foul.

45:50

Foul by Kevin Davies (Preston North End).

45:50

Joe Skarz (Rotherham United) wins a free kick in the defensive half.

45:00

Second Half begins Rotherham United 2, Preston North End 1.

45:00 +2:08 Half time

Half Time First Half ends, Rotherham United 2, Preston North End 1.

45:00 +1:19

Attempt missed. Craig Morgan (Rotherham United) right footed shot from outside the box misses to the left.

45:00 +0:30

Foul by Paul Gallagher (Preston North End).

45:00 +0:30

Richard Smallwood (Rotherham United) wins a free kick in the defensive half.

44:43

Attempt missed. Joe Garner (Preston North End) header from the centre of the box is close, but misses to the left. Assisted by Paul Gallagher with a cross following a corner.

44:14

Corner, Preston North End. Conceded by Adam Collin.

44:13

Attempt saved. John Welsh (Preston North End) right footed shot from outside the box is saved in the top right corner. Assisted by Neil Kilkenny.

38:45

Attempt missed. Paul Gallagher (Preston North End) right footed shot from outside the box is too high.

36:47

Offside, Preston North End. Neil Kilkenny tries a through ball, but Joe Garner is caught offside.

35:44

Attempt missed. Joe Garner (Preston North End) header from the centre of the box is high and wide to the left. Assisted by Scott Wiseman with a cross.

34:40

David Buchanan (Preston North End) wins a free kick on the left wing.

34:40

Foul by Kieran Agard (Rotherham United).

33:14 Goal scored

Goal! Goal! Rotherham United 2, Preston North End 1. Lee Frecklington (Rotherham United) header from the centre of the box to the bottom left corner. Assisted by Ben Pringle with a cross.

30:43

Attempt blocked. Paul Gallagher (Preston North End) left footed shot from outside the box is blocked. Assisted by Joe Garner with a headed pass.

30:03

Attempt missed. Wes Thomas (Rotherham United) right footed shot from the right side of the six yard box is too high. Assisted by Ben Pringle with a cross.

27:44

Attempt blocked. Paul Gallagher (Preston North End) left footed shot from outside the box is blocked. Assisted by John Welsh.

26:00

Attempt missed. Wes Thomas (Rotherham United) right footed shot from the right side of the box is high and wide to the right. Assisted by Alex Revell with a headed pass.

25:08

Corner, Preston North End. Conceded by Craig Morgan.

23:23 Goal scored

Goal! Goal! Rotherham United 1, Preston North End 1. Wes Thomas (Rotherham United) header from the centre of the box to the top right corner. Assisted by Ben Pringle with a cross following a set piece situation.

23:00

Alex Revell (Rotherham United) wins a free kick in the attacking half.

23:00

Foul by Scott Wiseman (Preston North End).

22:09

Offside, Preston North End. Kevin Davies tries a through ball, but Paul Gallagher is caught offside.

22:05

Attempt missed. Kevin Davies (Preston North End) right footed shot from the right side of the box misses to the left.

17:22

Attempt missed. Kári Arnason (Rotherham United) header from the left side of the box misses to the right. Assisted by Ben Pringle with a cross following a corner.

17:05

Corner, Rotherham United. Conceded by Declan Rudd.

17:03

Attempt saved. Kári Arnason (Rotherham United) header from the centre of the box is saved in the top right corner. Assisted by Ben Pringle with a cross.

16:34

Richard Smallwood (Rotherham United) wins a free kick in the attacking half.

16:34

Foul by Paul Gallagher (Preston North End).

15:19 Goal scored

Goal! Goal! Rotherham United 0, Preston North End 1. Paul Gallagher (Preston North End) from a free kick with a right footed shot to the top right corner.

14:39

Foul by Kári Arnason (Rotherham United).

14:39

Joe Garner (Preston North End) wins a free kick in the attacking half.

12:50

Foul by Lee Frecklington (Rotherham United).

12:50

Joe Garner (Preston North End) wins a free kick in the defensive half.

10:43 Booking

Booking Bailey Wright (Preston North End) is shown the yellow card for a bad foul.

10:34

Kieran Agard (Rotherham United) wins a free kick on the right wing.

10:34

Foul by Bailey Wright (Preston North End).

9:28

Attempt missed. John Welsh (Preston North End) right footed shot from outside the box is too high following a corner.

8:57

Corner, Preston North End. Conceded by Ben Pringle.

8:07

Foul by Lee Frecklington (Rotherham United).

8:07

Kevin Davies (Preston North End) wins a free kick in the attacking half.

7:01

Corner, Rotherham United. Conceded by Tom Clarke.

5:59

Wes Thomas (Rotherham United) wins a free kick on the left wing.

5:59

Foul by Tom Clarke (Preston North End).

3:01

John Welsh (Preston North End) wins a free kick on the right wing.

3:01

Foul by Richard Smallwood (Rotherham United).

0:00

First Half begins.

0:00

Lineups are announced and players are warming up.

Live data and text provided by our data suppliers