Seam bowler Junior Dala took five wickets for the hosts.
Durban’s Super Giants extended their lead at the top of the SA20 standings, while the Pretoria Capitals’ playoff aspirations took a big knock, with the hosts earning an eight-run victory at Kingsmead on Tuesday night.
Chasing 175 runs to win, the Capitals got off to a good start, playing with intent during the powerplay with crucial points on the line in a tight battle for places in the knockout stages.
Opening batter Will Jacks held the top order together, hitting 41 runs off 26 deliveries, but his contribution came to an end in the ninth over when seamer Junior Dala clipped his middle stump.
After Jacks was dismissed, the rest of the Capitals line-up were unable to recover, despite a sloppy Super Giants attack giving away 25 extras.
Pretoria Capitals v MI Cape Town: All you need to know
Captain Wayne Parnell (12), Eathan Bosch (14) and Adil Rashid (19 not out) tried desperately to keep the tail wagging for the Pretoria outfit, but they were not able to carry their team across the line.
Dala led the charge with the ball for the Super Giants, returning spectacular career-best figures of 5/26 as the home side were restricted to 166/9.
Super Giants innings
Earlier, after winning the toss and choosing to bat, the hosts were anchored by opener Matthew Breetzke as they compiled 174/9.
Breetzke made 73 runs off 46 balls in an innings which featured 10 fours and three sixes, while fellow top-order batter Heinrich Klaasen added a valuable 30 off 18.
After Breetzke was removed in the 12th over, when Senuran Muthusamy had him caught at long-off by Bosch, the home side struggled to build on his early momentum. They nonetheless managed to hold things together for the full 20 overs.
Fast bowler Daryn Dupavillon, who took 3/25, and Muthusamy, who returned 3/26, were the most destructive and economical members of the Capitals attack.
The Capitals, lying fifth in the standings, will face MI Cape town in their penultimate match of the league stage in Centurion on Thursday.
The Super Giants will play their last game before the playoffs on Saturday when they take on Joburg Super Kings at the Wanderers.