Dave Kitson's 12th goal of the season continued Reading's push for promotion as the Royals ended Cardiff's run of seven games without defeat.
Kitson superbly put the seal on Reading's hard-fought win when he displayed a neat combination of legwork to round Cardiff keeper Tony Warner and sidefoot home on 39 minutes.
The striker, who now stands alone at the top of the Championship goalscoring charts, gave Reading a vital cushion after Dean Morgan's first of the season had put them ahead on 13 minutes.
Cardiff gave themselves a real mountain to climb when captain Graham Kavanagh was sent off for an ugly stamp on Steve Sidwell on 57 minutes.
But the ten men did battle back in a frantic late finish, which saw substitute Cameron Jerome offer some hope with a late header.
Reading, though, were worthy of their win, having recovered from an unconvincing start to take control of the game.
Seventeen-year-old winger Joe Ledley could have put Cardiff ahead inside two minutes but saw his low shot well smothered by Reading keeper Marcus Hahnemann.
And Cardiff lived to regret that early miss as Morgan opened the scoring on 13 minutes, with a big helping hand from Cardiff keeper Warner.
The tricky winger ran on to James Harper's pass and skipped past two defenders before hitting a hopeful cross-shot that Warner could only help into the back of the net.
Kitson made it 2-0 six minutes before half-time after Nicky Shorey had snatched possession in midfield and set the striker up.
Kitson did the rest, tricking his way past Warner and then hooking the ball in from a tight angle.
Having proved so adept with his feet, the lanky striker should have done better with his head twice in the second half, but nodded wide on both occasions.
Andy Hughes also wasted a golden opportunity to avoid the frantic late finish when his low shot was saved by Warner.
But Jerome made no mistake when he headed in Willie Boland's free-kick three minutes from time.
And the ten men might have snatched a point and extended their unbeaten run to eight games in stoppage time, only for Welsh international defender James Collins to head over after escaping the Reading defence.