The Potters were gifted the lead by a bizarre Roger Johnson own goal before Ricardo Fuller added Stoke's second from the penalty spot.
Jimmy Floyd Hasselbaink scored on the hour to give Cardiff hope and he should have scored minutes later after being put through one-on-one.
But keeper Steve Simonsen saved as Stoke continued their good run of just one defeat in 14 Championship games.
Cardiff manager Dave Jones:
"Their second goal is a poor goal to concede because it has come from our corner and Kevin tried to out-muscle a tank.
"Kevin needed to be cleverer as if someone is a lot stronger than you, then don't show your weakness.
"Kevin has good pace and if he allows Fuller to head it on, Kevin would have just swept it up and they'd be no danger of conceding a penalty.
"But overall our tempo wasn't high enough and while we didn't deserve to lose the game, we didn't deserve to win it."
Stoke: Simonsen, Griffin, Pugh, Shawcross, Cort, Lawrence, Cresswell, Diao, Delap, Sidibe (Whelan 82), Fuller.
Subs Not Used: Hoult, Zakuani, Parkin, Gallagher.
Goals: Johnson 39 og, Fuller 57 pen.
Cardiff: Oakes, McNaughton, Johnson, Loovens, Capaldi, Ledley, Rae, McPhail, Whittingham, Hasselbaink (Thompson 82), Parry.
Subs Not Used: Enckelman, Purse, Ramsey, Blake.
Booked: McNaughton.
Goals: Hasselbaink 63.
Att: 15,045
Ref: Steve Bennett (Kent).
Bookmark with:
What are these?