Two goals in six minutes condemned Millwall to defeat in their final home Sky Bet Championship match of the 2018/19 campaign on Tuesday night at The Den as Bristol City were 2-1 winners.
Lee Gregory gave Millwall a half-time lead with a classy finish on 41 minutes, but after Shaun Williams missed a second-half penalty, strikes from Jamie Paterson and Famara Diedhiou turned the game on its head.
Neil Harris made two changes for the visit of The Robins, with James Meredith and Steve Morison replacing the injured Jed Wallace and Ben Marshall.
Meanwhile, Academy products Jesse Debrah, Billy Mitchell and George Alexander were all named among the substitutes.
After a quiet opening period, the first effort of the night went the way of Bristol City, but Liam Walsh dragged wide. Jake Cooper then powered a header towards goal for Millwall, which was blocked, before Jamie Paterson curled into the arms of David Martin at the other end.
Mahlon Romeo then provided a crucial tackle as Andreas Weimann looked to pull the trigger with 21 minutes on the clock, whilst Cooper again got on the end of a set-piece four minutes later, however he was ruled offside.
The visitors should have taken the lead five minutes before the break, but after Weimann's cross was kept in by Paterson, Diedhiou fluffed his lines from close range. That proved pivotal, as a minute later, Morison's knockdown found Gregory, who turned superbly to fire home the opening goal of the game.
The striker then could have doubled his and Millwall's tally on 43 minutes, but after twisting and turning, could not get a clean shot away.
Paterson then curled just wide for The Robins, before Gregory beat goalkeeper Max O'Leary to the ball, only for his effort to be blocked - Shane Ferguson attempted from range, but that was also blocked and cleared as The Lions finished the half strongly.
Ryan Tunnicliffe was the first man to get a shot in on goal in the second-half, but it was one comfortable enough for O'Leary to gather with ease, before on 54 minutes The Lions were just a lick of paint away from doubling their advantage, as Cooper's header rebounded off the post before Ryan Leonard chipped out of play.
The chances kept coming, as Gregory's typical anticipation led to a chance for Tunnicliffe, however O'Leary saved, but Williams then had an effort blocked. Weimann then just about got a toe to the ball before Tunnicliffe, before Ferguson's deep cross was turned over by Morison as The Lions were dominant.
Gaps were appearing in City's defence as they chased the win needed to maintain their shot at the Play-Offs, with a combination of Ferguson, Williams and Gregory fashioning an effort on 67 minutes, but it was curled over the crossbar.
With 72 minutes on the clock, Millwall won a penalty as the outstanding Gregory beat O'Leary to the ball before being brought down by the stopper. Williams stepped up and shot low to the goalkeeper's right, but O'Leary saved.
That proved to be a big moment four minutes later as after Bristol City were awarded a free-kick around 25 yards out, Paterson's curler left Martin motionless as the ball sailed into the net.
Gregory nearly put Millwall back in front 11 minutes from time, but after Williams' free-kick was nodded back across goal by Morison, the striker's overhead-kick was blocked. It was not to be, however, as with eight minutes remaining, Diedhiou lashed home City's second of the night to put them into the lead.
Martin then stood tall from Weimann's effort as City looked to add a third, but with no further action in three minutes of stoppage-time, The Lions' home campaign was to end in defeat.
Millwall: Martin, Meredith (McLaughlin 78'), Cooper, Williams (Elliott 87'), Gregory, Ferguson, Romeo, Pearce, Tunnicliffe, Morison, Leonard. Subs not used: Amos, Skalak, Debrah, Mitchell, Alexander.
Scorer: Gregory 41'
Bristol City: O'Leary, Webster, Brownhill, Diedhiou, Walsh (Palmer 46'), Weimann, Kelly, Paterson, Pack, Kalas, Hunt (Pisano 30' (Taylor 62')). Subs not used: Dasilva, Wright, Eliasson, Eisa.
Scorer: Paterson 76', Diedhiou 82'
Booking: Brownhill, Walsh, Palmer
Referee: Andrew Madley
Attendance: 12,261 (1,344)