Match ends, Bristol City 8, Walsall 2.
Champions Bristol City thrashed Walsall, prior to being presented with the League One trophy at Ashton Gate.
Jordy Hiwula slotted the Saddlers into a surprise lead, but Aden Flint's volley and Jay Emmanuel-Thomas's penalty turned the match around.
Hiwula scored again to equalise before the rout began in the second half.
Defender Flint added two more for his hat-trick, Emmanuel-Thomas and Kieran Agard completed braces and Marlon Pack also scored in a remarkable 45 minutes.
Former Swindon Town centre-half Flint's treble was the highlight for the hosts, as he took his personal tally up to 15 for the season and capped an amazing afternoon for Steve Cotterill's side.
The game, which had little riding on it for either team, had been evenly poised before Agard's strike on the counter-attack early in the second half sparked a Saddlers capitulation.
The Robins, who lifted the league trophy in front of a jubilant Ashton Gate crowd, ended their campaign on 99 points, the highest tally ever achieved in the club's history.
Dean Smith's Walsall, meanwhile, finished 13th in the table, having gone seven matches unbeaten before their miserable final-day defeat.
Bristol City boss Steve Cotterill told BBC Radio Bristol:
"In the first half, we were a bit sloppy. There were a few reminders needed at half-time. I said 'if we play properly, we'll score a few' and in the second half we did that. It was just a little prick of their conscience.
"This season, from minute one until the 93rd minute on the last day of the season, they've played properly every week.
"I said to the strikers at the end of the game that they should be ashamed of themselves when someone like Aden Flint has gone out there and scored three.
"I didn't want to look at him, because I knew the size of the grin that was going to be on that face. He's had a brilliant season."
- 24TavernierSubstituted forWagstaffat 80'minutes
- 15FreemanSubstituted forElliottat 83'minutes
- 10Emmanuel-ThomasSubstituted forBurnsat 71'minutes
- 2PurkissSubstituted forDowningat 68'minutesBooked at 90mins
- 14BenningSubstituted forTaylorat 68'minutes
- 7ChambersBooked at 72mins
- 12CainSubstituted forSawyersat 68'minutes
- Paul Tierney
- Shots on Target
Second Half ends, Bristol City 8, Walsall 2.
Goal! Bristol City 8, Walsall 2. Kieran Agard (Bristol City) right footed shot from the centre of the box to the bottom right corner. Assisted by Korey Smith.
Paul Downing (Walsall) is shown the yellow card.
Marlon Pack (Bristol City) wins a free kick in the attacking half.
Foul by Paul Downing (Walsall).
Goal! Bristol City 7, Walsall 2. Aden Flint (Bristol City) right footed shot from very close range to the bottom right corner following a corner.
Attempt saved. Wade Elliott (Bristol City) right footed shot from the left side of the box is saved in the bottom left corner.
Corner, Bristol City. Conceded by Craig MacGillivray.
Attempt saved. Joe Bryan (Bristol City) left footed shot from the left side of the box is saved in the bottom left corner.
Substitution, Bristol City. Wade Elliott replaces Luke Freeman.
Attempt saved. Andy Taylor (Walsall) right footed shot from outside the box is saved in the centre of the goal.
Substitution, Bristol City. Scott Wagstaff replaces James Tavernier.
Attempt saved. Romaine Sawyers (Walsall) left footed shot from outside the box is saved in the bottom right corner.
Corner, Bristol City. Conceded by Andy Taylor.
Attempt blocked. James Tavernier (Bristol City) right footed shot from outside the box is blocked.
Adam Chambers (Walsall) is shown the yellow card.
Korey Smith (Bristol City) wins a free kick in the defensive half.
Foul by Adam Chambers (Walsall).
Derrick Williams (Bristol City) wins a free kick in the defensive half.