In Paarl, the Rocks won the toss and chose to bowl first. They restricted the Warriors to 127-8, with Matthew Breetzke top-scoring with 48.
Siyabonga Mahima and Christiaan Jonker collected 2-21 each.
Keegan Petersen hit an innings-high 33 with support from Aviwe Mgijima (29) and Shaun von Berg (29). The hosts won with three overs to spare, inflicting only the second loss of the season on the runaway leaders.