The Saints claimed a first win in seven games thanks to a double from Jay Rodriguez and a Rickie Lambert strike as the home side were torn apart.
Peter Whittingham had missed a great early chance for the Bluebirds but, aside from a brief rally early in the second half, they were outplayed by their visitors.
The on-field performance added to the sense of off-field discontent caused by the civil war between Mackay and owner Vincent Tan which has put the manager’s position in real jeopardy.
The lingering uncertainty over Mackay’s future, despite a statement from chairman Mehmet Dalman that he would be in charge for the “foreseeable future”, fuelled a pre-match protest where a group of supporters voiced their disapproval of Tan’s running of the club.
Chants of ‘Don’t sack Malky Mackay’ and ‘We’ll always be blue’ also rang around the stadium during the game.
But the woeful nature of the performance was such that by the full-time whistle not all of the boos from the remaining home fans were for the Malaysian owner, who himself left his seat five minutes before the end.
Southampton simply strolled to victory, although it could have been a different game had Whittingham not missed a sitter in the 11th minute.
Craig Noone whipped in a wonderful cross from the Cardiff right to pick out Whittingham’s late run into the box, but the midfielder fluffed his lines and diverted the ball over the bar from close range.
The miss proved costly as Saints took the lead three minutes later.
Steven Davis freed Adam Lallana on the right and the midfielder teed up Rodriguez for a tap-in with an inch-perfect ball across the box.
Rodriguez had been in an offside position when Davis’ pass was played but was not interfering and play was correctly allowed to go on for him to slot home.
The travelling support chanted ‘You’re getting sacked in the morning’ to Mackay, and the Scot’s plight became even worse in the 20th minute.
Lambert picked out Rodriguez, who had lost Kevin-Theophile Catherine with ease, for the striker to roll the ball through David Marshall’s legs.
It was soon 3-0 and Rodriguez was involved again. The striker beat Aron Gunnarsson in the air and Lambert pounced on the loose ball to fire past a helpless Marshall.
Cardiff almost hit back immediately when Andrew Taylor’s shot took a deflection off Jose Fonte, but Paulo Gazzaniga readjusted to palm the ball away.
Southampton looked comfortable, but Peter Odemwingie should have made the most of being incorrectly ruled onside.
The Nigerian forward dithered as he headed into the box and Maya Yoshida got back to make the tackle.
It was little surprise when the former West Brom player was withdrawn at the break with Andreas Cornelius taking his place.
The big Danish striker had two chances soon after coming on, but Gazzaniga punched away one header before a second flew wide.
Saints gave a reminder of their threat on the counter as Luke Shaw burst forward and had a shot saved by Marshall, while Campbell fired over wildly at the other end.
The game petered out during the final quarter and boos greeted the home side as they left the field, not that Tan would have heard them.