Nelson Oliveira scored a late winner as Reading boosted their Sky Bet Championship survival hopes with a 2-1 victory over Blackburn.
The visitors controlled the first half but they could not convert a series of good opportunities and were later made to pay.
Reading went 1-0 up on the stroke of half-time when John Swift finished coolly from six yards out.
Rovers equalised through Amari'I Bell with eight minutes left but Oliveira grabbed the Reading winner four minutes later.
Reading had won just once in 15 Championship outings but had shown improved form ahead of this game.
They had drawn their previous three matches, including goalless affairs with Aston Villa and Sheffield Wednesday.
A run of four successive wins last month had taken Blackburn to the fringes of a top-six place.
But they had lost their past two games – 5-2 at Brentford and 1-0 at home to Bristol City – to fade from play-off contention.
Oliveira returned up front for Reading following a one-match absence after he sustained horrific facial injuries – including a nose broken in four places – in the draw with Villa.
Oliveira was injured after an alleged stamp on his head by Villa's Tyrone Mings – but the on-loan Villa defender was not charged by the FA.
Reading made a poor start and Oliveira, wearing a protective mash, received little service.
Rovers were far superior in every department, with Charlie Mulgrew signalling their early intent from a 25-yard free-kick that sailed over the home crossbar.
Blackburn continued to press, with Adam Armstrong exchanging passes with Mulgrew only to be denied by a fine save from home goalkeeper Emiliano Martinez.
Reading finally got going and almost took the lead through a cheeky piece of trickery from Oliveira.
The Portuguese striker spotted Rovers keeper David Raya off his line and tried to lob him from 35 yards out.
With Raya in trouble and backtracking furiously, the ball narrowly cleared his bar.
Blackburn recovered their composure, with Craig Conway, Mulgrew and Armstrong all squandering promising openings.
Yet, totally against the run of play, Reading went ahead in first-half stoppage time.
Andy Yiadom cut in from the right and fed Swift, who created space for himself before firing a low, angled shot past Raya.
Reading displayed more forward momentum after the interval. Yakou Meite, a half-time substitute, headed straight at Raya from a Swift corner. Raya also saved a firm 20-yard drive from Oliveira.
Meite then had a chance to make it 2-0 following a defence-splitting pass from Ovie Ejaria. But with only Raya to beat, Meite scuffed his effort well wide.
Bell levelled in the 82nd minute, firing home an angled drive from Joe Rothwell's precise pass.
But Oliveira secured a much-needed victory for Reading when he unleashed a fierce long-range effort past Raya.
ga('create', 'UA-72310761-1', 'auto', {'name': 'pacontentapi'});
ga('pacontentapi.set', 'referrer', location.origin);
ga('pacontentapi.set', 'dimension1', 'By Press Association Sport staff');
ga('pacontentapi.set', 'dimension2', '39f94877-e308-4946-8d9d-dc32bd90cefe');
ga('pacontentapi.set', 'dimension3', 'paservice:sport,paservice:sport:club-news,paservice:sport:football,paservice:sport:match-reports');
ga('pacontentapi.set', 'dimension6', 'story');
ga('pacontentapi.set', 'dimension7', 'composite');
ga('pacontentapi.set', 'dimension8', null);
ga('pacontentapi.set', 'dimension9', 'sport:football');
ga('pacontentapi.send', 'pageview', { 'location': location.href, 'page': (location.pathname + location.search + location.hash), 'title': 'Oliveira scores late winner as Reading get much-needed victory'});