Reading's play-off hopes suffered a blow as Millwall fought back late on to win 2-1 at the Madejski Stadium.
Although the visitors dominated much of the opening period, the Royals snatched a 17th-minute lead thanks to Alfa Semedo's audacious long-range strike.
The Lions roared back in the second half to clinch victory with goals from substitutes Matt Smith and Mason Bennett in the last 14 minutes.
Reading had been in good form, unbeaten in seven Sky Bet Championship matches until losing 3-1 at home to Brentford on Wednesday evening.
Millwall were undefeated in five league outings, and they began more positively, with Shaun Williams seeing a shot deflected wide and Jake Cooper, the former Reading centre-back, firing wildly over.
They went even closer in the eighth minute, when Scott Malone slung over a cross from the left and George Evans rose alone to meet it.
Evans, another ex-Royal, guided his header towards goal but, with home keeper Rafael well beaten, it thudded against the crossbar.
Reading gradually improved and went ahead nine minutes later, the goal tinged with a touch of fortune.
Millwall keeper Bartosz Bialkowski threw the ball to Williams but the midfielder did not appear to realise that it was coming to him.
Semedo nipped in and, from 35 yards out, the Benfica loanee beat the backtracking Bialkowski with a speculative yet successful first-time finish.
Reading maintained the pressure towards half-time but Millwall could have equalised from a Malone free-kick - Cooper found space at the far post only to nod weakly wide.
Ben Thompson also had a chance, from the edge of the home area, but volleyed straight at Rafael.
Just before the break, Lucas Joao latched on to a fine pass from Michael Olise but Bialkowski made a decisive sprawling stop.
Neither side seemed willing to push too far forward at the start of the second half, the contest increasingly fought out in the middle of the park.
Millwall did attempt to up the tempo but could still not find the target, with Evans volleying over from a good opening.
Reading replied from a quick break but Olise, with time to pick his spot, shot tamely at Bialkowski.
Millwall pushed forward strongly thereafter and were rewarded in the 76th minute when Smith jabbed home from close range after Tom Bradshaw's scuffed shot.
Ovie Ejaria struck the crossbar as Reading tried to respond quickly but, five minutes from the end, Bennett dashed their hopes when popping up to nod home the winner.
What the managers said...
Reading's Veljko Paunovic: "It is a hard loss. Obviously, we are not happy with the result. It was a tough one to take, especially because in the first half we played a difficult game against a difficult opponent.
"But we should have scored more goals, which was the key to the game. And then, in the second half, we conceded twice and put ourselves in a difficult situation. It is not the time to put the blame on somebody. We are all responsible for this result."
Millwall's Gary Rowett: "We certainly weren't hoping to hold our team meeting in a concourse that was about minus-eight. All the players felt that it was a tad disrespectful to put us there. But it gave us more motivation and we certainly used that to our advantage.
"No, we weren't in a caretaker's shed. It wasn't quite as good as that. If we'd lost the game, I would have said the same thing. I've got no real complaints but it was the players who felt aggrieved."