Reading’s play-off hopes were dealt a significant blow despite a last-gasp goal from Yakou Méïté to salvage a point after Kieffer Moore’s 87th minute penalty.
The Royals couldn’t find a way past a resilient Cardiff back-line until stoppage time despite Méïté having a couple of presentable chances.
A breakthrough looked unlikely for ether side until Moore was brought down by Omar Richards and converted from the penalty spot with just three minutes of the 90 to play.
Reading finally found a way through in the 94th minute when Méïté converted the ball in from close range to salvage a point.
Reading desperately needed a win to cut the gap between them and the Championship top-six. But their promotion dreams are starting to fade after the draw leaves them four points behind sixth placed Barnsley who have a game in hand tomorrow.
In a must-win fixture to keep their play-off hopes alive, Veljko Paunović made two changes from the defeat at Watford as Omar Richards and Lucas João were named among the starts, meanwhile the Royals had the added boost of being able to name John Swift on the bench.
Cardiff flew out of the traps in the opening seconds to give Reading a scare as Liam Moore fouled Harry Wilson just inches outside of the box to give the Bluebird a free-kick in a dangerous position.
Thankfully for the Royals, their wall was well positioned to block Will Vaulks powerful drive to prevent an early shot at Rafael Cabral’s goal.
The visitors had the first big chance of the match when Wilson burst through into the box, but Rafael came to the rescue as he reacted quickly to get down low to his right to keep out the Liverpool loanee in the 16th minute.
Reading tried to get forward when Andy Rinomhota poked the ball through into the path of Yakou Méïté, but Aden Flint stayed switched on at the back to shut off his run and only concede a corner.
There were plenty of fouls throughout the half as both sides failed to find any consistent rhythm to their play.
It took the Royals until the 27th minute to create their first opening when they had a few chances in quick succession.
Lucas João neatly flicked the ball to Michael Olise who opted to shoot instead of trying to find either João or Méïté who had both made runs ahead of him and had his effort blocked. The follow up fell to Ovie Ejaria who worked some space for a shot in the box but also his route to goal blocked by some determined Cardiff defending.
The Bluebirds stayed organised and compact at the back to limit any clear chances as Tom Holmes played a superb long ball to find Andy Yiadom on the right, but Flint stood in the way to divert the cross out of the box.
Omar Richards delivered a teasing ball to the back post to try and find Méïté but again the Cardiff defence were well positioned to nullify the threat as the first-half ended goalless in a so far uneventful affair.
Reading tried to step up the intensity in the second-half and won an early free-kick that led to some injury treatment for João and a booking for Cardiff’s Curtis Nelson.
Ovie Ejaria had a half chance when he cut onto his right foot and curled an effort goalwards but it didn’t trouble Cardiff keeper Alex Smithies who comfortably caught the ball.
João had another sight of goal in the 55th minute when Olise played a quick free-kick to find the forward who spun away from his marker and blasted a shot towards goal that was saved at the near post by Smithies.
In the aftermath of the shot, João was left in discomfort after taking a heavy fall to the ground and had to be replaced by George Pușcaș.
Reading showed far more attacking intent than their opponents as they pushed to find a goal to keep their fading play-off hopes alive. Méïté tried to find the breakthrough but snatched a shot just inches wide of the post with a low drive in the 68th minute.
Méïté then had a brilliant to chance to put Reading in front just moments later when Josh Laurent fed the ball to him to hit first time in the box but the Ivorian forward spooned his effort high over the target.
Swift made his long awaited return to play the final 15 minutes of the contest as Reading searched for a much needed winner.
The Bluebirds had a rare foray forward in the 75th minute as three players streamed forward in support of Kieffer Moore, but the striker hit a tame effort at Rafael’s goal to waste a big opportunity.
Cardiff had another chance when Wilson burst through on goal and chipped the ball over the onrushing Rafael but Yiadom was well placed to get back onto the line and hook the ball away.
Reading were punished for not taking a chance and Cardiff broke down the other and won a penalty as Moore was brought down by Richards in the box.
Moore stepped up and blasted the ball into the top left corner to give the Bluebirds a late breakthrough.
Méïté managed to salvage a draw late in stoppage time as he pounced from close range, but Reading weren’t able to find time for a winner in a costly result for their play-off chances.
Reading are away at Luton Town in their next game on Wednesday evening.
Reading: Rafael, Richards, Moore (c), Holmes, Yiadom, Rinomhota, Laurent, Ejaria, Olise, Méïté, João
Subs: Southwood, Esteves, Gibson, Tetek, Semedo, Swift, Aluko, Pușcaș, Baldock
Cardiff City: Smithies, Nelson, Flint, Brown, Sang, Vaulks, Pack, Ng, Ralls, Wilson, Moore
Subs: Phillips, Osei-Tutu, Murphy, Williams, Ojo, M Harris, Hoilett, Colwill
Goals: Moore 87′ (pen), Méïté 90+4′