The first serious effort on goal at the Stadium of Light arrived after eight minutes when Sebastian Larsson met a cross from Connor Wickham, but his header was straight into the arms of Cardiff goalkeeper David Marshall.
Wickham's fourth Premier League goal of the season arrived on 26 minutes when the powerful forward looped a header into the top corner, with Marshall unable to claw clear.
© Getty Images
Wickham had another clear opportunity after 32 minutes when a loose ball fell to the England Under-21 international inside the box, but Juan Cala was across to make a last-ditch challenge.
Moments later, Jack Colback fired just wide of Marshall's post at the pressure continued from the Black Cats.
The match became stretched in the latter stages of the half as the referee was forced to issue a series of yellow cards.
It got worse for Cardiff late in the first period, meanwhile, as Cala was dismissed for pulling Wickham to the ground inside the box.
Fabio Borini stepped up to send his penalty into the bottom corner and hand Sunderland a two-goal lead at the break.
Borini tried his luck from outside the box in the early stages of the second period, but could only flash his effort wide of the post as Cardiff continued to struggle in defensive areas.
© Getty Images
Cardiff's first chance of the second half arrived after 57 minutes when Jordan Mutch met a corner from the left, but his header was high and wide of the crossbar.
Chances continued to arrive as the match became stretched around the hour mark, but Borini fired wide for Sunderland after Larsson had wasted a crossing opportunity from the left.
Borini again came close for the home side 10 minutes later, but Marshall denied the on-loan Liverpool striker from close range as Cardiff continued to hold on.
Emanuele Giaccherini made it 3-0 15 minutes from time when the Italian collected a through-ball from Borini before rolling his effort into the bottom corner.
Sunderland were not finished, however, and made it 4-0 late on when Wickham scored his second with another close-range header.