Reading fought hard against promotion-chasing opposition, and were rewarded with a 1-1 draw against Bristol City on Friday lunchtime.
Yakou Méïté scored his fifth goal in as many games to put the Royals in front early in the second half, before Josh Brownhill levelled the scores at Ashton Gate.
The Royals pushed for a late winner, but it wasn't to be as they earned another valuable point on the road. Just three matches remain to secure safety in the Sky Bet Championship.
Reading reverted to the formation that saw them bring a point back from leaders, Norwich City, as Tyler Blackett added his presence in defence, in place of Nélson Oliveira.
The Royals weathered a City attack from the very first whistle, with Liam Moore putting his body on the line to block a Josh Brownhill shot, before the Robins came back again with Jay Dasilva on the left. Chris Gunter got his foot around it, and could clear in an early warning sign for Reading.
A Josh Brownhill free-kick was then glanced at goal by Jack Hunt, with Emi Martínez claiming it in the air. Fewer than five minutes were on the board, and Reading had to force their way out of the traps.
Up the other end, the Royals forced a corner, which made its way over to Yakou Méïté on the left of the area. He recycled and hung up another cross into the area - Liam Moore got there first, but headed off-balance and over the bar.
The Royals pounced on some slack passing in the Bristol City back-line when Ovie Ejaria stole possession in midfield, getting towards goal but having his initial effort blocked. Méïté won it in the area, shooting on the turn and forcing a flying save from Max O'Leary to tip it over. It was a fast start in Bristol on Friday.
The ball came loose in midfield with 15 minutes gone. Mo Barrow and Méïté linked up once more as the Ivorian was slid clean through on goal. He gave chase, took a touch but couldn't get enough power behind his strike, with O'Leary untroubled with a comfortable save.
A freak challenge midway through the half saw Ejaria and Korey Smith both receive lengthy medical treatment - the Reading man was caught in the face, but the City player was stretchered off with what looked like a nasty leg injury. Liam Walsh was on in his place.
The volume increased around the ground, with City getting a trio of chances that the Royals managed to clear. Walsh powered a low strike from the edge of the box that Martínez saved to his right, Brownhill picked up possession and arrowed a shot at goal that Matt Miazga headed off the line, before Hunt fired low and wide. Big cheers followed from the 2,000 travelling Royals as Miazga tried to gee up the away support.
Liam Moore mistook himself for a left-winger when he overlapped Blackett on the flank, driving on and putting in a decent cross for Barrow to throw himself at - narrowly missing the ball in a quick counter for the Royals.
Back at the other end, the hosts came back with Dasilva finding Diedhiou on the volley, putting it across goal and wide.
An absolutely breathless first half of football at Ashton Gate, that somehow ended goalless.
Half time | Bristol City 0-0 Reading
Just three minutes into the second half, Reading took a surprise lead. A Lewis Baker free-kick straight from the training ground saw him play short to Ejaria, who touched out to Rinomhota on the run to the byline.
He then played in low to Méïté in the box, who bundled in from close range to score his fifth goal in as many games.
The hosts, who are pushing to cement their place in the Championship's top six, naturally tried to fire back quickly. A cross from Walsh was bent into the box for Diedhiou to head, albeit straight into the grateful gloves of Martínez.
Reading tried to take the momentum and breathlessness that dominated the first half out of the game, but the Robins still pressed. Andreas Weimann bought himself a yard of space to shoot, but he could only find the side netting.
After putting in a shift full of running in the first hour, goalscorer Méïté was replaced for a fresh pair of legs up front in Nélson Oliveira.
Lee Johnson's side were trying to pepper the Reading box with crosses and corners, but almost all were overhit or comfortably caught by the goalkeeper. The Royals were proving to be a tough nut to crack for the promotion contenders.
But 18 minutes from time, that's exactly what the hosts managed. A deep cross from Niclas Eliasson found Brownhill at the far post, who nodded into the ground and over the line to put Bristol City back level on the day.
Tom McIntyre was swiftly introduced for his second senior appearance in place of the tireless Ejaria, who had seemingly got himself under the skin of the home support after his first-half collision with Smith. Andy Yiadom pushed into midfield in the vacant slot left by the Liverpool loanee, with McIntyre taking a place on the left of the three central defenders.
Garath McCleary was sent on to join Oliveira high up the pitch with eight minutes left on the clock, with the hosts the aggressors as time ticked on.
The Royals were able to break quickly from the back and McCleary got forward with Oliveira, with the Portuguese taking a touch in the box and shooting off-balance, with the ball sailing into the Reading support.
Four minutes were added, and as ever, the Royals pushed right to the finish. They dominated the late pressure in the game, but couldn't find a way through. A valuable point on the road nonetheless for José Gomes' side.
Full time | Bristol City 1-1 Reading
Bristol City: O'Leary, Dasilva, Webster, Wright (c)(Eliasson 60), Kalas, Smith (Walsh 29), Hunt, Pack, Brownhill, Weimann (Taylor 80), Diedhiou.
Subs: Baker, Watkins, Kelly, Palmer.
Goals: Brownhill (72)
Reading: Martínez, Gunter, Yiadom, Blackett, Moore (c), Miazga, Rinomhota, Baker, Ejaria (McIntyre 73), Barrow (McCleary 83), Méïté (Oliveira 63).
Subs: Walker, Baldock, Harriott, Loader.
Goals: Méïté (48)
Attendance: 23,309 (2,017 away)