Match ends, Reading 1, Cardiff City 1.
Reading's hopes of a Championship play-off spot remain intact after Yakou Meite's late equaliser against Cardiff.
Meite headed in Sam Baldock's fine cross from close range in the fourth minute of stoppage time to make it 1-1.
It had seemed Cardiff would take all three points after Kieffer Moore's penalty with five minutes remaining.
The draw leaves Reading seventh, four points behind Barnsley who have a game in hand over the Royals, while Cardiff are eighth but out of contention.
Cardiff's hopes of a top-six finish have all but ended - a fact acknowledged by Bluebirds boss Mick McCarthy - with the Royals knowing anything less than a win would see them lose valuable ground in the fight for a play-off spot.
Reading boss Veljko Paunovic made two changes from the side beaten 2-0 by Watford, with Omar Richards and top scorer Lucas Joao returning, while Cardiff made one change from the side held at home by Blackburn with Joe Ralls replacing Josh Murphy.
The visitors were certainly playing for lower stakes than Reading and with the pressure off they started brightly with Harry Wilson's run culminating in a shot that Rafael did really well to turn away.
The stakes seemed to be weighing on the hosts and it was 29 minutes before they produced a shot on target, but Meite's attempt at flicking the ball home audaciously was easily stopped by Cardiff goalkeeper Alex Smithies.
Ovie Ejaria's shot from 20 yards on 51 minutes was the next time Smithies was tested in a contest full of niggle and tetchy fouls and short on quality and clear-cut opportunities.
Joao almost caught out Cardiff as he received a clever free-kick and fired at goal on the turn, but Smithies saved his effort at the near post in a costly incident as Joao injured his shoulder as he fell, with the striker unable to continue.
Reading's urgency increased in the second half and they began to look more of a threat thanks to increased possession higher up the pitch, with Meite wasting a great chance on 69 minutes when he shot over after being found unmarked in the penalty area.
Cardiff did not come close in the second half until they had two chances within a minute as Moore shot tamely at Rafael, before they almost pinched the lead when Harry Wilson broke clear and dinked the ball over the goalkeeper, but Andy Yiadom cleared the ball off the line.
The Bluebirds continued to soak up the pressure before a mistake seemed to have won them the contest as Richards switched off and fouled Moore, who fired the penalty into the roof of the net with five minutes remaining.
However, Reading were not to be denied and Meite headed home from sub Baldock's fine cross with Aden Flint unable to deflect the ball wide.
Reading boss Veljko Paunovic said:
"The result is not what we wanted. We are unhappy about it. We played a very solid game and confronted and matched their team well throughout the match.
"In the past we have struggled against a direct approach unfortunately we conceded the penalty that changed the game. They blocked and defended very well.
"After we conceded, the reaction and the composure didn't crumble. We understood it was time to put more numbers in attack even before their goal.
"I see a group of people who are 100% committed to help the team secure the play-offs. One point is not what we wanted but it's something."
Cardiff City boss Mick McCarthy told BBC Radio Wales Sport:
"I'm raging," the manager said. "That's how I'm feeling. I'm sick of conceding goals at half-time, full time, full time today.
"I said on Saturday that Blackburn, with their performance, they deserved it, but I'm not bothered about people deserving it, we shouldn't let them off the hook and we did.
"We have done it today. We've been terrific, we've blocked stuff, defended, caught them on the break, we could have scored a couple more in the second half.
"We just let our guard down - again. And I'm raging."
- 33Cabral Barbosa
- 17YiadomSubstituted forBaldockat 90'minutes
- 3RichardsSubstituted forAlukoat 90'minutes
- 8RinomhotaSubstituted forSwiftat 77'minutes
- 7OliseSubstituted forTetekat 90'minutes
- 18Lucas JoãoSubstituted forPuscasat 58'minutes
- 2Pontes Esteves
- 16NelsonBooked at 46mins
- 30BrownBooked at 78mins
- 21PackBooked at 50minsSubstituted forMurphyat 70'minutes
- 23WilsonSubstituted forOjoat 81'minutes
- 29M Harris
- John Brooks
- Shots on Target
Second Half ends, Reading 1, Cardiff City 1.
Goal! Reading 1, Cardiff City 1. Yakou Meite (Reading) header from the centre of the box to the high centre of the goal. Assisted by Sam Baldock with a cross.
Attempt blocked. John Swift (Reading) left footed shot from outside the box is blocked. Assisted by Dejan Tetek.
Substitution, Reading. Dejan Tetek replaces Michael Olise.
Substitution, Reading. Sam Baldock replaces Andy Yiadom.
Substitution, Reading. Sone Aluko replaces Omar Richards.
Attempt missed. Aden Flint (Cardiff City) header from the centre of the box is just a bit too high. Assisted by Will Vaulks with a cross following a corner.
Corner, Cardiff City. Conceded by Thomas Holmes.
Goal! Reading 0, Cardiff City 1. Kieffer Moore (Cardiff City) converts the penalty with a right footed shot to the top left corner.
Penalty conceded by Omar Richards (Reading) after a foul in the penalty area.
Penalty Cardiff City. Kieffer Moore draws a foul in the penalty area.
Attempt saved. Sheyi Ojo (Cardiff City) left footed shot from outside the box is saved in the centre of the goal. Assisted by Will Vaulks.
Foul by Yakou Meite (Reading).
Alex Smithies (Cardiff City) wins a free kick in the defensive half.
Substitution, Cardiff City. Sheyi Ojo replaces Harry Wilson.
Foul by Yakou Meite (Reading).
Ciaron Brown (Cardiff City) wins a free kick in the defensive half.
Foul by John Swift (Reading).
Curtis Nelson (Cardiff City) wins a free kick in the defensive half.