The win moved the defending league champions into second place -- with 36 points accumulated after 20 games.
Dominating the first 45 minutes, Pirates scored all three goals within the first 24 minutes as Chiefs' defence were slow to react.
McCarthy was on target in the ninth and 24th minute and the veteran striker was also at hand for the side's second goal.
He set up Ndumiso Mabena, who took a shot inside the box before the move was completed by Daine Klate in the 21st minute.
Chiefs, though, grafted their way back before the interval through talisman Siphiwe Tshabalala.
The Bafana Bafana striker turned inside the box to slot past Pirates' goalkeeper Moeneeb Josephs in the 32nd minute.
Substitute striker Lehlohonolo Majoro brought Amakhosi to within touching distance with a spectacular bicycle-kick from a corner after 70 minutes to make the scores 3-2.
It was a far improved effort for the Buccaneers after a lethargic 3-0 midweek loss to Santos – their first match under interim coach Augusto Palacios following the suspension of Julio Leal.
Tshabalala, back from injury after a month on the sidelines, seemed to carry his side and fashioned a shot outside the box which sailed narrowly over the bar.
However, it was Pirates who were superior in front of the 87,171 crowd and were more threatening in front of Itumeleng Khune's goal with chances falling to Klate and Mabena.
Chiefs, who had been inactive for two weeks, started to find their footing in the final quarter of the opening half, and took the momentum with them into the second.
Amakhosi coach Vladimir Vermerzovic threw caution to the wind near the hour mark and brought on forwards Majoro and Lucky Khune to replace the ineffective duo of George Lebese and Mandla Masango.
Pirates had opted to beef up their midfield with the introduction of Thandani Ntshumayelo for Mabena early in the second stanza.
The hosts still made breaks going forward through Klate's attempted lob which went over the crossbar and McCarthy, who was blocked by Lincoln Zvasiya in the dying moments as he attempted to blast a memorable hat-trick.
Tshabalala nearly forced a draw in the last minute for Chiefs though, as he sliced through the Pirates' defence, but was let down by his first touch as Josephs easily collected.
Chiefs remain on 33 points after 20 matches and suffered their fourth loss of the campaign.
Head-to-head since the formation of the National Soccer League (now Premier Soccer league) in 1985, Chiefs still held the lead, having won 22 matches to Pirates' 12 from 53 games played.
WITS SEE STARS
Two second half goals condemned Wits to four matches without a win in the Premiership, as they were thrashed by 3-1 by Free State Stars at Bidvest Stadium on Saturday.
Going into halftime locked at 1-1, Stars, despite playing away from home, looked the more complete team and were clinical with their finishing.
Wits made a run at scoring in the first half, but seemed to tire in the second period as Stars strengthened their grip on the encounter.
The Clever Boys had their chances though at 2-1 down, but failed to convert and dropped more valuable points at home this season.
Wits started the game moving the ball around the pitch, but their interplay was not confident and their passing was careless.
Stars worked their way into the game after an initial flurry of attacks by the home side, and were rewarded with the opener in the 24th minute.
Stars player Katlego Mashego received the ball on the edge of the area, and with time and space picked his spot in the corner of goal and rifled the ball into the net to make it 1-0 to Stars.
The visiting team’s lead was wiped out in the blink of an eye, as Wits moved play straight into the Stars box from the restart.
They were rewarded with a penalty, and Sifiso Vilakazi calmly slotted home from the spot to level the scores at 1-1.
Free State Stars went ahead again in the 62nd minute, as they caught Wits napping and Noah Chivuta was on hand from a Mashego cross to slot home the goal from close range.
Emile Baron was the standout player for the home side in the Wits goal, as he pulled off some good reaction saves to keep his team in the match, but his efforts were ultimately to no avail.
In the 76th minute David de Oliveira should have equalised. He made a good run into the area and from close range and with just Kennedy Mweene to beat in the Stars goal, launched his shot wildly into the stands.
In the 84th minute, Stars ended the match as a contest with their third goal. Edward Mnqele was on the end of a cross in the area, and he rounded the keeper and stuck the ball into the net to make it 3-1 and cap a resounding victory.
With the win, Stars move up to sixth on the table with 32 points after 20 games while Wits drop a spot to 9th without adding to their 26 points.