Junior Hoilett came back to haunt his former club as he scored the only goal to earn Reading a 1-0 victory and increase the pressure on Cardiff manager Mick McCarthy.
Hoilett scored 25 goals in 184 games for the Bluebirds and helped them into the Premier League in 2018, but he was released by McCarthy this summer.
He returned to Cardiff City Stadium with a vengeance and his fine finish gave Reading the points.
It means Cardiff have now lost their last five successive Championship matches and seven of their last eight in all competitions.
Cardiff recalled Joe Ralls just a day after the midfielder celebrated 10 years since his league debut for the Bluebirds but captain Sean Morrison was absent.
The Bluebirds had been awful when they were thrashed 4-0 by West Brom in midweek, but they at least carried an early threat against the Royals.
Mark McGuinness had a header saved from a Curtis Nelson cross, with Luke Southwood producing a smart save in the Reading goal.
The presence of Ralls and Wales striker Kieffer Moore meant Cardiff improved on their Baggies showing, although they could hardly have been worse.
Ralls had a shot blocked and McGuinness went close again. To that point Reading had disappointed as an attacking force so it was a surprise when they took the lead before the break.
A long ball forward found its way to Hoilett on the edge of the box. There looked little danger for Cardiff, but the Canada international made fine use of an inch of space to find the bottom corner.
Hoilett refused to celebrate after scoring with Reading's first shot of the afternoon.
Ryan Giles was Cardiff's most threatening player. He produced yet another cross just before the break which Aden Flint spooned over the crossbar.
Cardiff's Sam Bowen had a shot blocked at the start of the second half. He screamed for a penalty claiming his effort had hit Reading captain Liam Moore's hand but the appeals were waved away.
Giles also worked Southwood, who saved easily, and Marlon Pack curled wide from 25 yards as Cardiff built up some momentum and introduced young Wales international Rubin Colwill.
Cardiff then appealed for another penalty after Moore went down and Bowen was again denied by Southwood after the shot on target was deflected wide by a last-gasp Reading block.
Cardiff got increasingly desperate late on and the home crowd's anger was palpable, but neither could stop Reading from hanging on to seal the three points.
Even home goalkeeper Alex Smithies went up for a corner in added time, but Cardiff just couldn't score despite having 25 attempts on goal.
It leaves McCarthy clinging to his job amid an awful run of form which has seen Cardiff supporters turn their back on the experienced manager.
Cardiff City: Smithies, McGuinness, Nelson, Flint, Brown, Pack, Bowen (Collins 79’), Ralls (Vaulks 79’), Bacuna (Colwill 61’), Giles, Moore.
Subs not used: Phillips, Ng, Bagan, Harris.
Reading: Southwood, Yiadom (Clarke 80’), Moore, Laurent, Rahman, Drinkwater, Dele-Bashiru, Swift, Ejaria, Hoilett, Pușcaș (Dann 65’).
Subs not used: Rafael, Dann, Ehibhationham, Osurio, Stickland, Bristow.