Chasing 269 for a victory which would have booked their spot in the final, WA were well placed after a 152-run partnership between Shaun Marsh and Cameron Bancroft at Metricon Stadium.
However, the hosts bounced back with the ball and WA were eventually all out for 242 in the 49th over.
Despite the defeat, Western Australia are only behind Queensland on net run rate and know a win over South Australia in their last round-robin fixture will secure a spot in the final.
"We're in a good position still, the boys have played some really good cricket in this tournament so far," Marsh said.
"Really disappointing today, I thought we were in a really good position there at the 38th over but after that it went downhill for us."
After winning the toss and electing to bowl first, the visitors put in a solid bowling performance after the Bulls made a fast start.
Matt Kelly and Nathan Coulter-Nile again showed their class with the ball finishing with two wickets each.
Marcus Stoinis claimed three wickets in the final over to finish with figures of 4-50, while debutant spinner Liam O'Connor snared the prized wicket of test opener Usman Khawaja.
WA head to Brisbane tomorrow ahead of their Marsh Sheffield Shield fixture against Queensland, starting on Saturday at the GABBA.