Match ends, Reading 1, Wigan Athletic 0.
Wigan Athletic were relegated back into League One as Reading beat them to confirm their play-off place.
The Royals' leading scorer, Yann Kermorgant, gave them a perfect start, heading in Garath McCleary's cross.
Wigan then lost Shaun MacDonald to a serious leg injury, after a collision with George Evans.
The visitors also lost Reece Burke before half-time, but they responded well, Callum Connolly heading their best chance into the side-netting.
Only bottom side Rotherham have scored fewer Championship goals than Wigan this season, and once again the Latics lacked a cutting edge, though Nick Powell twice forced former Wigan goalkeeper Ali Al-Habsi into saves.
Michael Jacobs also tested Al Habsi as Wigan piled forward late on, but they could not prevent a sixth defeat in their past eight away matches.
Reading were not at their best but had chances to extend their lead, with Lewis Grabban firing just wide, while penalty appeals were waved away after Kermorgant went down under a challenge from Stephen Warnock.
The Royals boast the second-best home record in the Championship, behind leaders Brighton, having racked up 53 points at the Madejski Stadium.
And victory here moved them up to third, a point ahead of Sheffield Wednesday and Huddersfield with one match left.
But it consigned Wigan, who needed to win and hope other results went their way, to a 23rd-place finish and an immediate return to League One.
Latics fail to make the step up
Wigan were unable to continue the form which took them to the League One title last season, as they took only five points from their opening nine games of the season.
Will Grigg also struggled to make the step up, with League One's leading scorer last season scoring in only five league games this term.
That has contributed to the second-worst goalscoring record in the division, with Wigan managing a meagre 39 goals in 45 games.
Manager Gary Caldwell was sacked in October, five months after leading the club to promotion, but replacement Warren Joyce could not make the desired impact, winning only six of his 24 games before Graham Barrow replaced him.
Despite the changes, the Latics have not found a stable, winning line-up, with the club having used a league-high 41 players this season.
Reading boss Jaap Stam:
"That level today was not good enough for the play-offs. We need to step up, we need to do better.
"We've haven't done today what we can do. For what reason, I don't know.
"Every game in the play-offs is totally different than what it can be in the league and it's already a big achievement for us that we're up there.
"There's no pressure on us. You've got to give it your best shot and that's what we're going to do."
Wigan interim boss Graham Barrow:
"At the end of the game, I was disappointed because I wanted to take it to the last weekend. But results went against us elsewhere as well.
"I thought we could stay up, I knew it was a long shot, and I was quite proud of the performance today. But obviously the finishing touch was not there.
"The lads have been great for me but clearly it hasn't been enough to keep us up.
"There are things we'll have to look at internally, which haven't been right, and that's fact. We are where we are, the table tells no lies."
- 26Al Habsi
- 2GunterBooked at 51mins
- 16MooreBooked at 45mins
- 38KellyBooked at 87mins
- 6EvansBooked at 13minsSubstituted forIloriat 74'minutes
- 12McClearySubstituted forGrabbanat 45+2'minutes
- 8SwiftSubstituted forWilliamsat 60'minutesBooked at 64mins
- 32BurkeSubstituted forConnollyat 45+7'minutesBooked at 50mins
- 16MacDonaldSubstituted forPowerat 21'minutes
- 25PowellSubstituted forBogleat 79'minutes
- Tim Robinson
- Shots on Target
Second Half ends, Reading 1, Wigan Athletic 0.
Liam Moore (Reading) wins a free kick in the defensive half.
Foul by Craig Morgan (Wigan Athletic).
Foul by Yann Kermorgant (Reading).
Craig Morgan (Wigan Athletic) wins a free kick in the defensive half.
Attempt missed. Jamie Hanson (Wigan Athletic) header from the centre of the box misses to the right. Assisted by Stephen Warnock with a cross.
Danny Williams (Reading) wins a free kick in the defensive half.
Foul by Michael Jacobs (Wigan Athletic).
Foul by Tiago Ilori (Reading).
Ryan Tunnicliffe (Wigan Athletic) wins a free kick in the attacking half.
Attempt missed. Jamie Hanson (Wigan Athletic) right footed shot from outside the box is just a bit too high from a direct free kick.
Liam Kelly (Reading) is shown the yellow card for a bad foul.
Foul by Liam Kelly (Reading).
David Perkins (Wigan Athletic) wins a free kick in the attacking half.
Attempt missed. Lewis Grabban (Reading) left footed shot from the centre of the box is high and wide to the right. Assisted by Jordan Obita.
Attempt missed. Lewis Grabban (Reading) header from the centre of the box misses to the right. Assisted by Roy Beerens with a cross.
Corner, Wigan Athletic. Conceded by Liam Moore.
Attempt missed. Omar Bogle (Wigan Athletic) left footed shot from outside the box misses to the right. Assisted by Max Power.
Chris Gunter (Reading) wins a free kick in the defensive half.