Having spent all season daring to dream of an unexpected return to the Premier League after eight years away, reality has caught up with Reading.
They have faded on the season’s home straight from certainties to finish in the play-off positions to standing on the outside looking despairingly in.
Although they managed to salvage a point through Yakou Meite’s header in the depths of stoppage time, cancelling out Kieffer Moore’s penalty for Cardiff, it probably won’t be enough.
The Royals are four points behind Bournemouth in fifth and Barnsley in sixth with just four games left to play.
They can only hope those two both lose this weekend to prolong the chase into the final weeks. Even then, you sense Reading have run out of puff in the Championship marathon after just one win in seven.
At least they didn’t flag here. In the final minute, Meite rose highest to meet Sam Baldock’s cross with Aden Flint unable to stop it crossing the line.
But it was an underpowered performance against an out-of-form Cardiff already thinking about next season. Sluggish Reading had created very little and were rocked three minutes from time.
After Sheyi Ojo’s initial shot was beaten away by keeper Rafael Cabral, the Bayern Munich-bound Omar Richards brought down Moore, who got up to dispatch his 17th goal of the season.
‘Once again we showed we never give up,’ said Royals boss Veljko Paunovic. ‘A penalty kick changed the game but we bounced back and scored a goal and it was too late to score a second goal.
‘Nobody is going to give up, we are not going to crumble. We’ll give our best and fight to the end.’
Cardiff boss Mick McCarthy described himself as ‘raging’ after the late equaliser.
‘We should not have let them off the hook. I can’t criticise the lads too much, for that 94 minutes they were terrific,’ he said.
‘You drop your guard against good teams and you get punished.’
Cardiff started the brighter, testing Reading’s defence in the opening exchanges as McCarthy’s booming touchline instructions echoed off the Madejski’s empty blue seats.
Wales winger Harry Wilson looked lively, pinging a shot that Aden Flint deflected just wide with an outstretched boot but from an offside position.
A better chance came on 16 minutes when Wilson drifted infield and tried to curl the ball home from the edge of the box. The Liverpool loanee was denied by Reading keeper Rafael, who dived low to his right to turn it away one-handed.
Reading were sluggish for the opening half-hour before finally exerting some sustained pressure.
In the same move, Michael Olise and Ovie Ejaria saw two shots blocked apiece before Meite’s back heel flick failed to trouble Alex Smithies from a good position.
Reading had to create more and Smithies saved well at his near-post from Lucas Joao after Olise’s smart through pass from a free-kick. Joao had earlier dislocated his shoulder and was forced off after falling awkwardly after this effort.
And there was another good opening 20 minutes from time when Meite, leaning back, blazed over from 12 yards after good build-up play from Richards and Josh Laurent.
But then it got worse. Wilson skipped through on a rare Cardiff attack and dinked over Rafael before Andy Yiadom cleared off the line.
And with time running out, the clumsy tackle from Richards and Moore’s unerring penalty left them pointless. Even Meite’s late leveller might not be enough now.
Derby's relegation worries deepened after Harvey Elliott's strike condemned them to a damaging 2-1 defeat at Blackburn.
Wayne Rooney's side went ahead against the only team in worse form in the last six games when former Rovers loanee Tom Lawrence headed in from close range.
They looked comfortable for spells afterwards but gave away two soft goals that turned the game in Blackburn's favour, through Sam Gallagher's clever header just before the break - his seventh of the season - and Liverpool loanee Elliott marking his 50th senior appearance in style, profiting after Andre Wisdom needlessly surrendered possession.
These are worrying times for Rooney's men who, despite a decent performance, lost their fourth game in five outings and remain fourth from bottom, four points above Rotherham who have three games in hand.