Boro's home campaign ended in defeat at the Riverside Stadium.
It ensures Boro’s hunt for a first home league win of 2020 will continue into the new season.
It took Cardiff just three minutes to get their noses in front. Joe Ralls sent over a corner from the left and Sean Morrison was able to find the space to head the ball home.
Boro should have had an almost immediate opportunity to level matters when Djed Spence was hauled to the ground in unceremonious fashion, but both referee Jeremy Simpson and one of his assistants were unmoved.
There wasn’t a lot in the game and Aynsley Pears beat away a good strike from Ralls and he also spread himself well to deny Robert Glatzel while at the other end, Alex Smithies clung on to an effort from Djed Spence.
But the second goal came within 90 seconds of the restart when Josh Murphy was awarded the freedom of the Boro half after a through ball and was able to pick his spot to leave Pears with no chance.
Cardiff goalkeeper Smithies pulled off the save of the game midway through the second half when Marcus Tavernier worked himself an opening and delivered a thunderous strike. Substitute Lukas Nmecha also tested the goalkeeper with a neat turn and strike.
But Cardiff sealed the win when Murphy scored his second of the afternoon after Nathaniel Mendez-Laing did well down the right and delivered a great ball into the box.
There was still time for Boro to pull a goal back, though, Britt Assombalonga sweetly converting a free-kick six minutes from time.
Boro were reduced to 10-men for the final moments when Jonny Howson was handed a second yellow card for a foul on Will Vaulks.