Yann Kermorgant's superb free kick settled things at the Madejski this afternoon, winning three more points for Jaap Stam's side - the second league victory within the space of four days.
John Swift had handed the home side the lead when he swept home from eight yards out following a clever backheel from Garath McCleary, but Joe Ralls levelled matters on the stroke of half-time when he converted from the penalty spot after Morrison had drawn a foul from Moore.
But Kermorgant won the set piece and elegantly whipped the dead ball past the Cardiff wall and beyond the dive of Allan McGregor to win it for the Royals!
Jaap Stam made one change to the line-up that began our 1-0 win over Fulham earlier in the week, reinstating striker Yann Kermorgant up front after an illness had forced him to start as a substitute on Tuesday night. Tyler Blackett made way, starting on the bench to allow McCleary to operate as a right wing-back and Gunter to switch to the left.
Reading began the brighter and McCleary tested McGregor's handling with a well struck effort after a neat one two with Swift on the edge of the Cardiff box inside the first eight minutes.
With a quarter of an hour played, McCleary turned provider, beating Richards down the right to cut into the box and pull the ball back for Williams 10 yards out. The midfielder tried to take a touch to control it and that allowed a Cardiff leg to step in and clear it.
But the Bluebirds came close to breaking the deadlock at the other end when a free kick was only cleared as far as Joe Ralls whose deflected shot cannoned into the base of the left post and away to safety.
The Royals were bossing possession but Cardiff's main threat was stemming from aerial balls into the box, a dangerous inswinging cross from the left glanced behind by a mish-mash of bodies. And Reading's defensive line took a body blow when Van den Berg pulled up with what looked like a hamstring problem before half-time.
But there was also a goal before the break, scored by John Swift from eight yards out. Danny Williams took aim from 22 yards out and McGregor couldn't hold it. McCleary, who had moved into a forward role as part of a formation change, produced a sublime backheel to recycle the ball back to an unmarked Swift who dragged the ball home with his right boot.
However, Neil Warnock's side were level in added time. Morrison burst into the six yard box stooping to head a flicked on ball goalwards. Al Habsi saved it well as it bobbled towards the bottom left corner, but referee Tony Harrington pointed to the penalty spot to award the visitors a spotkick for a foul by Moore on Morrison. Joe Ralls stepped up and slid the ball under Al Habsi's dive to level matters.
Half-time: Reading 1-1 Cardiff City
Buoyed by their penalty, City started the second half well and Hoilett forced a smart save from Al Habsi with a right-footed effort from left of centre. Then Morrison flicked on a long Gunnarsson throw only for Al Habsi to react well and gather the ball in on the bounce.
But Reading enjoyed a good spell of possession and just before the hour deservedly retook the lead. Kermorgant was scythed down by Bamba on the edge of the area and the Frenchman stepped up to sweep the set piece past the Cardiff wall and beyond the dive of McGregor, nestling inside the bottom left corner for 2-1.
Kermorgant nearly had a second when he scurried onto a well-weighted ball from midfield and rounded McGregor - but the keeper did enough to force the striker wide and his cross back into the box was shuffled behind for a corner kick by Halford.
From the corner, McShane headed just wide at the near post and then a break saw Kelly feed McCleary - but City got back in time to scramble it off the forward's toes before he could pull the trigger.
Cardiff kept pressing for a second equaliser though and Al Habsi did well to read a Hoilett set piece and tip the ball over the bar after Kelly had handled on the edge of the box to concede a free kick.
Beerens and McCleary combined well down the right and the latter darted in along the byline to see his powerful cross pushed away by McGregor at his near post.
But at the other end, substitute Kadeem Harris ate up space down the right only to see his cross flash across the box and away from danger. With just one goal in it, the result was still uncertain.
Kermorgant's ball for Kelly was well intercepted by Morrison before Kermorgant's follow-up was charged down on the edge of the box. But then at the other end, Harris was causing problems for the hosts - scuttling into the box down the right but his shot whistled across the six yard box to the Royals' relief.
Four minutes of injury time were signalled and Healey arrowed an effort over after yet another aerial ball had dropped to the forward's feet. Reading were hanging on, but hang on they did with a resolute defensive display at the end. Three more points!
Full-time: Reading 2-1 Cardiff City
Reading: Al-Habsi, McCleary, Gunter, McShane (c), Moore, Van den Berg (Blackett 40), Swift (Evans 55), Williams, Kelly, Beerens (Obita 76), Kermorgant.
Subs: Jaakkola, Meite, Mendes, Samuel.
Goals: Swift (42), Kermorgant (60)
Cardiff City: McGregor, Peltier, Halford (Kennedy 76), Bamba, Morrison (c), Richards, Gunnarsson, Ralls (Whittingham 89), Hoilett, Healey, Zohore (Harris 66).
Subs: Murphy, Connolly, John, Noone.
Goals: Ralls pen (45)
Att: 18,558 (2,348 away)