Reading reignited their push for a Sky Bet Championship play-off spot with a hard-fought 2-1 victory over Luton.
Centre-back Tom McIntyre gave Reading an early lead with a precise first-time finish, while Benfica loanee Alfa Semedo added a second goal shortly before the break.
Luton improved after the interval and were rewarded in the 90th minute when substitute Kazenga LuaLua scored from long range.
After topping the table in November, Reading had won only three of their past 12 matches and lost three in four to slip out of the play-off places.
Luton had also endured a poor run, with only two victories in their past 10 games and just three in 13.
The Hatters' trip to Berkshire formed the second part of a four-match series with Reading this season. The visitors won 1-0 at the Madejski Stadium in the Carabao Cup second round in September.
They host Reading in the FA Cup third round at Kenilworth Road on January 9 - and also in the Championship in late April.
After staging three successive matches with crowds of 2,000 home fans, the Madejski returned to behind-closed-doors affairs after the town was imposed with increased Covid-19 restrictions.
Reading started brightly, with lone striker Sam Baldock seeing a shot blocked by the Luton defence in the opening stages.
The visitors failed to heed the early warning and went behind in the ninth minute from a move clearly rehearsed on the training ground.
Sone Aluko swung in a corner from the left and McIntyre, arriving late and unmarked in the area, sent a fine left-footed volley past goalkeeper James Shea.
It was a first goal for the club for the 22-year-old academy graduate, who only started the game due to the loss through injury of captain Liam Moore.
Luton attempted to respond but, with nine-goal top scorer James Collins often isolated, most of their moves broke down on the edge of the home area.
They were punished further four minutes before the break, following an intricate Reading move from their own half.
Baldock supplied the final pass for Semedo to run on to and easily beat Shea - also his first goal for the club.
In an effort to change the momentum, Luton manager Nathan Jones made a triple substitution at the break.
Kiernan Dewsbury-Hall, Danny Hylton and Rhys Norrington-Davies all came on but failed to make much difference as, again, Luton struggled to make headway against the solid home rearguard.
From a Dewsbury-Hall corner, though, Reading goalkeeper Rafael was finally called into action, saving comfortably from Luke Berry's tame header.
LuaLua gave Luton hope late on with a superb drive from 25 yards, but Reading held on to boost their play-off chances.
What the managers said…
Reading's Veljko Paunovic: "It was a very important win It was not in the nicest way but definitely the needed one. In the first half we were very dynamic, with a very narrow approach and clinical in our execution. The performance and the spirit were exactly what we had at the beginning of the season.
"Unfortunately, in the second half, we were not consistent with the ball possession and we had to change our approach a little bit. But we defended well until we conceded the late goal. This happens but we will definitely look to address that and fix it. We then almost started to be nervous and our win was almost put in jeopardy."
Luton's Nathan Jones: "Yes, we were undone by two goals from only two shots on target, but that can happen to you at this level. There's a lot of good sides that can do that. Their second goal was a really swift counter-attack and the other one was from a set-play.
"I'm a bit disappointed that we should have been better in the build-up to their second goal. We gave the ball away too cheaply. We should have been better. We had people running off us and that can't happen. You get punished when it does. ut we had enough of the game to have scored two goals today."