The Bulls ended the regular Super Rugby season on a low note with a 30-13 defeat away to the Stormers.
A victory would have taken the Bulls above the Chiefs at the top of the final overall standings and guaranteed them a home final should they win their play-off semi-final, but they struggled to make an impact as their nine-match winning streak came to an end.
The Stormers started strongly at Newlands and went ahead through a try from Eben Etzebeth before Morne Steyn replied with a penalty for the visitors.
The hosts soon extended their lead when Bryan Habana, playing in his final match before joining Toulon, sliced through the Bulls defence on the angle for a 15th-minute try after being brought into play by an inside pass from Jean de Villiers.
The Bulls turned down a straightforward chance for three points on their next attack and were rewarded for their decision when Zane Kirchner stretched over.
Three penalties from Gary van Aswegen kept the Stormers in charge, although De Villiers was yellow carded just before half-time for a late tackle without arms and Steyn added three points to see the sides head into the break with the Stormers 23-13 ahead.
The Bulls came under heavy pressure at the start of the second half despite initially having a numerical advantage and De Villiers returned to the fray to score a third try for the Stormers when he sneaked over.
The Bulls tried to find a way back into the game but the home defence stood firm as the Stormers ended their campaign on a high.