Josh Brownhill headed a 72nd minute equaliser to earn play-off contenders Bristol City a precious point in a 1-1 Championship draw with Reading at Ashton Gate.
The visitors took the lead three minutes after the break, Yakou Meite shooting home at the near post from Andy Rinomhota's low cross following a slick free kick routine straight off the training ground.
But City grabbed a deserved equaliser when a deep cross from the left by substitute Niclas Eliasson was nodded home by Brownhill at the far post.
The point eased Reading's relegation fears and was just reward for a committed and skilful performance, while City squandered the chance to put pressure on the other top six contenders with a win in the noon kick-off.
The hosts made a fast start to the game. In the opening minute Brownhill had a shot well blocked by Reading skipper Liam Moore and soon afterwards Tomas Kalas had a header saved by Emiliano Martinez.
Reading threatened for the first time on 10 minutes, Meite seeing a fierce shot on the turn brilliantly tipped over by Max O'Leary.
City top scorer Famara Diedhiou had a near post header deflected behind for a corner. But Reading were looking sharp on the break and Meite should gave done better when shooting tamely at O'Leary.
There was a lengthy 25th minute stoppage when Korey Smith, whose City career has been blighted by injuries, was left beating the ground in pain after colliding with Ovie Ejaria.
The influential midfielder was stretchered off to huge applause from home fans and Liam Walsh, himself returning after a long injury lay-off, went on as substitute.
It was all action again on the resumption, Martinez diving to keep out a Walsh shot and, as the move continued, Matt Miazga headed a Brownhill shot off the line.
Meite failed to make contact with a low cross when he might have scored and at the other end Diedhiou sent an acrobatic volley wide from Brownhill's cross.
City had the final chance of the half when Marlon Pack won possession and fed Andreas Weimann down the left. The striker raced forward only to shoot wide when he should have tested Martinez.
The home side began the second period as they had done the first, with Marlon Pack having a deflected drive from just outside the box saved.
But Meite's goal jolted the City fans and had more than 2,000 Reading supporters behind the net chanting "The Royals are staying up."
City head coach Lee Johnson responded by sending on winger Eliasson for centre-back Bailey Wright and the switch soon paid dividends with the assist for Brownhill's goal.
Both sides had chances in the closing stages, the best falling to Reading's Nelson Oliveira, who shot tamely wide when put through by fellow substitute Garath McCleary.
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', 'ca0b591e-510d-4828-9ba6-9726b40375b3');
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': 'Brownhill rescues point for Bristol City but play-off hopes suffer blow'});