Match ends, Leyton Orient 2(3), Rotherham United 2(4).
Rotherham secured their return to the second tier by beating Leyton Orient 4-3 on penalties after an enthralling 2-2 draw in the League One play-off final.
Moses Odubajo gave Orient the lead with a brilliant 25-yard volley before his low cross set up Dean Cox to tap home.
Alex Revell stabbed home from close range to make it 2-1, before levelling with a stunning 30-yard strike.
The O's were 3-2 ahead in the shootout before Adam Collin saved penalties from Mathieu Baudry and Chris Dagnall.
Orient looked on their way to ending a 32-year absence from the second tier after Lee Frecklington had missed his spot-kick.
But, with James Tavernier and Richard Smallwood both finding the net with their attempts, keeper Collin's heroics sealed a dramatic victory and a second successive promotion for Steve Evans's side.
The dramatic shootout had followed an entertaining game, which saw both sides playing some decent attacking football.
Rotherham had the best chances early on, with Wes Thomas seeing a scuffed shot saved by Jamie Jones before failing to connect with a dangerous James Tavernier free-kick.
Odubajo fired high and wide on the volley at the other end before showing a further glimpse of his potential by setting up a decent chance for David Mooney, who failed to connect with the winger's looping cross.
And, despite Tavernier firing a couple of attempts at Jones's goal, the young winger put Russell Slade's side ahead by chesting the ball down and unleashing a terrific 25-yard volley.
Odubajo then turned provider, collecting Tavernier's headed clearance before sending over a low cross for Cox to tap in.
Ben Pringle went close to reducing the deficit with a dipping 35-yard strike before Rotherham assistant manager Paul Raynor, a fixture on the touchline in his lucky gillet, was then sent to the stands at half-time.
The second half saw the Millers dominate with a succession of free-kicks and and it was from one of these they forced their way back into the game.
Tavernier's set-piece into the box caused havoc for the O's defence and allowed former Orient striker Revell to stab the ball in from close range.
Having conceded twice in five first-half minutes, Rotherham then completed the reverse as Revell controlled a high ball with his thigh before smashing a looping 30-yard half-volley over Jones, which prompted a mad dash down the touchline from ecstatic Millers boss Steve Evans, who has never managed in the second tier.
The equaliser seemed to swing the momentum back in Orient's favour with crosses from Odubajo and Lloyd James causing problems for the Millers defence.
Rotherham's danger was now more often coming from counter-attacks and Kieran Agard should have done better when he fired wide from the edge of the box.
Agard had an even better chance with just a minute of normal time remaining, heading Frecklington's cross wide when through on goal.
Orient continued to press, but the Millers had the final chance of normal time when Pringle fired over from distance.
Rotherham went close to making it 3-2 when Jones prevented O's defender Scott Cuthbert from heading in an injury-time own goal by tipping the ball away.
Mooney then fired over at the other end before Clarke leapt above the Millers defence but headed well wide when the goal was in sight.
Rotherham then lost Revell to injury and despite the O's continuing to dominate possession, the game headed to its dramatic conclusion.
It looked as if Orient, who finished third in League One, would be heading to the second tier, after Frecklington, who had recovered from an injury, saw his low spot-kick tipped away by Jones.
But there was to be one final dramatic twist as Millers keeper Collin pushed away the final two Orient attempts to secure the Millers' return to the Championship for the first time in nine years.
- 5CuthbertBooked at 31mins
- 15ClarkeBooked at 64mins
- 11OdubajoBooked at 35mins
- 10MooneyBooked at 93minsSubstituted forLundstramat 105'minutes
- 9LisbieSubstituted forDagnallat 76'minutes
- 7CoxSubstituted forBattat 74'minutes
- 27TavernierBooked at 78mins
- 3SkarzSubstituted forMilsomat 77'minutes
- 20MorganBooked at 34mins
- 9RevellSubstituted forVuckicat 105'minutes
- 26ThomasSubstituted forBrindleyat 54'minutes
- 18PringleBooked at 87mins
- David Coote
- Shots on Target
Penalty Shootout ends, Leyton Orient 2(3), Rotherham United 2(4).
Penalty saved! Chris Dagnall (Leyton Orient) fails to capitalise on this great opportunity, right footed shot saved in the centre of the goal.
Goal! Leyton Orient 2(3), Rotherham United 2(4). Richard Smallwood (Rotherham United) converts the penalty with a right footed shot to the bottom left corner.
Penalty saved! Mathieu Baudry (Leyton Orient) fails to capitalise on this great opportunity, right footed shot saved in the bottom right corner.
Goal! Leyton Orient 2(3), Rotherham United 2(3). James Tavernier (Rotherham United) converts the penalty with a right footed shot to the top left corner.
Goal! Leyton Orient 2(3), Rotherham United 2(2). Nathan Clarke (Leyton Orient) converts the penalty with a right footed shot to the bottom left corner.
Goal! Leyton Orient 2(2), Rotherham United 2(2). Ben Pringle (Rotherham United) converts the penalty with a left footed shot to the centre of the goal.
Goal! Leyton Orient 2(2), Rotherham United 2(1). John Lundstram (Leyton Orient) converts the penalty with a right footed shot to the high centre of the goal.
Penalty saved! Lee Frecklington (Rotherham United) fails to capitalise on this great opportunity, right footed shot saved in the bottom left corner.
Goal! Leyton Orient 2(1), Rotherham United 2(1). Lloyd James (Leyton Orient) converts the penalty with a right footed shot to the top right corner.
Goal! Leyton Orient 2, Rotherham United 2(1). Kieran Agard (Rotherham United) converts the penalty with a right footed shot to the centre of the goal.
Penalty Shootout begins Leyton Orient 2, Rotherham United 2.
Second Half Extra Time ends, Leyton Orient 2, Rotherham United 2.
Attempt blocked. Mathieu Baudry (Leyton Orient) right footed shot from outside the box is blocked. Assisted by Romain Vincelot with a headed pass.
Corner, Rotherham United. Conceded by Mathieu Baudry.
Attempt blocked. Haris Vuckic (Rotherham United) left footed shot from outside the box is blocked. Assisted by James Tavernier.
Attempt blocked. Lloyd James (Leyton Orient) right footed shot from the centre of the box is blocked.
Foul by Moses Odubajo (Leyton Orient).
James Tavernier (Rotherham United) wins a free kick in the attacking half.