Dexter Blackstock scored twice as Nottingham Forest ended a miserable season with a rare but deserved home win over already-relegated Portsmouth.
An entertaining enough first period failed to produce any goals but Forest upped the pressure after the interval.
Blackstock tapped in the opener from a yard with 20 minutes remaining.
And his powerful header from Andy Reid's corner ensured Forest's sixth home league win this term and a 19th-placed finish in the Championship.
Did you know?
Nottingham Forest have been in the bottom six continuously since mid-November and end the season on 50 points - their lowest points total since promotion from League One in 2008
Coventry's 4-0 defeat at the hands of Southampton means Pompey - the team Steve Cotterill left to become manager of Forest in October 2011 - ended a troubled season third from bottom, despite the defeat.
The visitors looked as if they might hold on for a point after a gutsy display, but Forest were always the more threatening and had the better chances before Blackstock broke the deadlock.
Garath McCleary and Lewis McGugan both looked lively for the hosts early on and Blackstock and Adlene Guedioura both tested keeper Jamie Ashdown.
Chris Gunter also blazed an effort over the bar, while, at the other end, Reds' goalkeeper Lee Camp fumbled a Kelvin Etuhu effort and Chris McGuire fired over the bar.
Forest started to increase the pressure after the interval and Blackstock tapped them ahead after a flowing team move involving Paul Anderson, Greg Cunningham and McCleary.
David Norris did shoot over from 16 yards for Pompey but, having had three headed chances saved within a minute by Ashdown, Blackstock sealed the win when he headed home in the final seconds.
Nottingham Forest manager Steve Cotterill:
"One of our biggest problems was that we didn't have a defence for half the season, certainly while I have been here.
"But we also had to deal with the fact that we didn't have a striker who was capable of making a difference by scoring goals in games that were tight.
"When you put the two together it is a recipe for disaster, but we brought defenders in on loan and Dexter [Blackstock] has come back and done exceptionally well.
"Everyone knows what sort of striker Dexter is, but he's a good lad as well and I'm delighted for him that he's finished the season so strongly."
Portsmouth manager Michael Appleton:
"We know we are going to be one of the big fish in League One next season and there's every likelihood that we will have 15,000 plus at Fratton Park every home game and that's big for any manager when he's trying to sign players.
"Our fans were tremendous today, but they always are. To be fair I thought the players gave them something to cheer about and they were still cheering long after the end of the game.
"It was a difficult match for both sides and I suppose we could both have done without it, but there will be a lot of changes next season.
"It's going to be a busy period over the next couple of months with a lot of players leaving and a lot of players hopefully coming in."
- 01 Camp
- 03 Cunningham
- 04 Chambers
- 16 Gunter
- 33 Lynch Booked
- 10 McGugan (Moussi - 72' )
- 11 Reid
- 22 Guedioura (Elokobi - 81' )
- 28 Majewski (Anderson - 65' )
- 12 McCleary
- 23 Blackstock
- 21 Smith
- 02 Wootton
- 26 Elokobi
- 07 Anderson
- 19 Moussi
- 01 Ashdown
- 02 Ward
- 03 Rocha
- 04 Mokoena Booked
- 23 Rekik
- 16 Allan
- 17 Harris (Futacs - 78' )
- 19 Norris
- 11 Varney
- 14 Etuhu
- 22 Maguire Booked
- 30 Magri
- 31 Webster
- 32 Wallace
- 09 Futacs
- 33 Grant
Live Text Commentary
Full Time The final whistle goes and the game is over.90:00 +2:28
Corner from left by-line taken by Luke Varney.90:00 +1:22
Foul by Joel Lynch on Marko Futacs, free kick awarded. Scott Allan takes the direct free kick.88:14
Assist on the goal came from Andy Reid.88:14 Goal scored
Goal! - Dexter Blackstock - Nott'm For 2 - 0 Portsmouth Goal scored by Dexter Blackstock from close range to the bottom right corner of the goal. Nottm Forest 2-0 Portsmouth.87:49
Corner taken by Andy Reid from the right by-line,86:47
Aaron Mokoena concedes a free kick for a foul on Guy Moussi. Lee Camp takes the direct free kick.83:24
Free kick taken by Aaron Mokoena. Outswinging corner taken from the right by-line by Chris Maguire.83:24 Booking
Booking Joel Lynch receives a yellow card for unsporting behaviour.83:19
Joel Lynch concedes a free kick for a foul on Chris Maguire.79:56
Greg Cunningham takes the direct free kick.79:56 Substitution
Substitution George Elokobi joins the action as a substitute, replacing Adlene Guedioura.79:56 Booking
Booking Chris Maguire booked for unsporting behaviour.79:48
Foul by Chris Maguire on Joel Lynch, free kick awarded.78:41
Andy Reid takes a shot. Save by Jamie Ashdown.77:59
A cross is delivered by Chris Gunter.77:14 Substitution
Substitution Ashley Harris leaves the field to be replaced by Marko Futacs.72:42
Andy Reid sends in a cross, Dexter Blackstock takes a shot. Corner taken by Andy Reid. The ball is delivered by Scott Allan, Dexter Blackstock takes a shot. Save by Jamie Ashdown.71:31 Substitution
Substitution Guy Moussi replaces Lewis McGugan.70:47
Dexter Blackstock challenges Kelvin Etuhu unfairly and gives away a free kick. Jamie Ashdown restarts play with the free kick.
Assist on the goal came from Garath McCleary.69:15 Goal scored
Goal! - Dexter Blackstock - Nott'm For 1 - 0 Portsmouth Dexter Blackstock scores a goal from close in to the bottom left corner of the goal. Nottm Forest 1-0 Portsmouth.66:48
Unfair challenge on Lewis McGugan by Chris Maguire results in a free kick. Luke Chambers restarts play with the free kick.64:42
Lee Camp takes the indirect free kick.64:42 Substitution
Substitution Paul Anderson on for Radoslaw Majewski.64:42
The assistant referee flags for offside against Luke Varney.58:48
Ashley Harris takes a inswinging corner to the near post, clearance by Andy Reid.57:44
The assistant referee signals for offside against Radoslaw Majewski. Jamie Ashdown takes the free kick.55:41
Free kick awarded for a foul by Luke Chambers on Chris Maguire. Chris Maguire has a direct shot on goal from the free kick.54:21
Chris Maguire is ruled offside. Lewis McGugan takes the direct free kick.53:21
Shot from just outside the area by David Norris goes over the bar.52:12
Scott Allan takes a shot. Lee Camp makes a save.51:36
Foul by Adlene Guedioura on David Norris, free kick awarded. Ashley Harris takes the direct free kick.49:55
Dexter Blackstock takes a shot from inside the six-yard box clearing the crossbar.47:42
Free kick awarded for a foul by Joel Lynch on Chris Maguire. Direct free kick taken by Aaron Mokoena.47:14
Chris Maguire gives away a free kick for an unfair challenge on Adlene Guedioura. Greg Cunningham restarts play with the free kick.46:07
Andy Reid produces a cross, Aaron Mokoena gets a block in. Corner taken left-footed by Andy Reid from the left by-line, Aaron Mokoena manages to make a clearance.45:59
Garath McCleary sends in a cross.45:01
The second half begins.45:00 +2:10 Half time
Half Time The ref blows to signal half-time.45:00 +1:41
Centre by Andy Reid, Jamie Ashdown makes a save.44:29
Free kick awarded for a foul by Ashley Harris on Joel Lynch. Lee Camp restarts play with the free kick.42:49
The ball is delivered by Chris Maguire.41:50
The ball is crossed by Garath McCleary, clearance made by Karim Rekik.38:59
Adlene Guedioura concedes a free kick for a foul on Joel Ward. Scott Allan restarts play with the free kick.37:57
Handball by Luke Varney. Luke Chambers restarts play with the free kick.37:38
Greg Cunningham produces a cross, Jamie Ashdown makes a save.35:14
Lewis McGugan challenges David Norris unfairly and gives away a free kick. Direct free kick taken by Aaron Mokoena.34:32
Joel Lynch restarts play with the free kick.34:32 Booking
Booking Booking for Aaron Mokoena for unsporting behaviour.34:24
Aaron Mokoena challenges Andy Reid unfairly and gives away a free kick.32:16
Corner from left by-line taken by Andy Reid. Joel Lynch concedes a free kick for a foul on Ricardo Rocha. Jamie Ashdown takes the direct free kick.31:22
Effort on goal by Chris Gunter from just inside the area clears the crossbar.30:07
Unfair challenge on Aaron Mokoena by Dexter Blackstock results in a free kick. Free kick taken by Jamie Ashdown.29:20
Radoslaw Majewski takes a shot. Jamie Ashdown makes a save. Corner taken by Andy Reid played to the near post, clearance by David Norris.28:03
The ball is swung over by Luke Varney, save made by Lee Camp.27:29
Radoslaw Majewski concedes a free kick for a foul on Joel Ward. Direct free kick taken by Karim Rekik.27:00
Shot by Chris Maguire from outside the box goes high over the crossbar.20:38
Luke Varney takes a shot. Save made by Lee Camp.19:27
Andy Reid takes a shot. Luke Varney gets a block in. Corner taken left-footed by Andy Reid from the right by-line, Dexter Blackstock has a header from deep inside the six-yard box and clears the crossbar.18:36
Garath McCleary produces a cross, Karim Rekik gets a block in. Corner taken by Andy Reid from the right by-line played to the near post, clearance made by David Norris.16:13
Chris Gunter sends in a cross, Jamie Ashdown makes a save.13:03
Chris Maguire takes a shot. Save by Lee Camp.10:37
The ball is swung over by Chris Gunter, blocked by Chris Maguire. Corner taken by Andy Reid from the right by-line played to the near post, Aaron Mokoena makes a clearance.7:46
Scott Allan sends in a cross, blocked by Chris Gunter. Scott Allan takes a inswinging corner from the left by-line played to the near post, save by Lee Camp.7:05
Adlene Guedioura produces a right-footed shot from long range which goes wide right of the target.5:14
Aaron Mokoena concedes a free kick for a foul on Greg Cunningham. Free kick crossed by Lewis McGugan.4:51
Aaron Mokoena takes a shot. Save by Lee Camp.3:51
Adlene Guedioura takes a shot. Save by Jamie Ashdown.3:37
Greg Cunningham crosses the ball, Joel Ward manages to make a clearance.2:04
The ball is delivered by Chris Gunter, save made by Jamie Ashdown.0:00
The referee starts the match.
Live data and text provided by our data suppliers