Ricardo Fuller's second-half penalty proved decisive as Stoke ended Cardiff's nine-game unbeaten run and bolstered their own promotion bid.
The first real chance arrived out of the blue in the 20th minute when Mamady Sidibe should have crowned his return from the Africa Cup of Nations with his first goal of the season.
Rory Delap's long cross was nudged forward by Fuller and Sidibe blasted his eight-yard shot straight at the legs of Michael Oakes when it looked easier to score.
Steve Simonsen comfortably dealt with Jimmy Floyd Hasselbaink's effort from distance just after the half hour as Cardiff attempted to make some inroads.
But Stoke were holding territorial advantage and took the lead when Cardiff defender Roger Johnson put the ball into his own net six minutes before the break.
Glenn Loovens missed his kick in an attempt to clear a right-wing corner from Liam Lawrence and the ball bounced in off the unfortunate Johnson's shin.
Stoke were within inches of going two up nine minutes after the break when Ryan Shawcross - called up to the England Under-21 squad for the first time this week - headed just wide from a Lawrence corner.
But they did double their lead from the penalty spot just three minutes later when Fuller, who was dumped to the floor by Kevin McNaughton, picked himself up to send Oakes the wrong way.
Sidibe missed another glorious chance from Fuller's lay-off on the hour and Cardiff took full advantage by reducing the arrears in the 63rd minute.
Peter Whittingham's free-kick was knocked back across goal by Paul Parry and Hasselbaink was perfectly placed to prod home at the far post.
Hasselbaink should have equalised less than a minute later when he tore clear only to be thwarted by a fine save from Simonsen.
But Stoke saw out the rest of the game with few alarms and Fuller should have added a third in stoppage time.