Anthony Pantazopoulos's 55th-minute goal put the Wanderers ahead before substitute Marcus Antonsson sealed the deal in the 73rd minute in front of a record 9213-strong crowd at Campbelltown Stadium on Saturday.
Macarthur had scored the opener via a Marin Jakolis goal in the fourth minute, but their lead only lasted 17 minutes before Wanderers star Bozhidar Kraev hit the scoreboard.
Western Sydney (46 points) will host Melbourne Victory in an elimination final next week after sealing a fourth-placed finish, just one point behind third-place Western United.
United defeated premiers Auckland FC 4-2 earlier in the day to secure their own home final, after Melbourne City sealed second place with a 5-1 win over Sydney FC.
A groin issue picked up by Alex Bonetig slightly dampened Western Sydney's win, the centre-back substituted out of the match after halftime as a precaution.
Meanwhile, the Bulls (33 points) miss out on finals in eighth.
It is a gut-wrenching end for Mile Sterjovski's side, having sat second on New Year's Day before a fast slide down the table following the January window departures of then-captain Valere Germain, striker Ariath Piol and winger Jed Drew.
An error by Wanderers goalkeeper Lawrence Thomas had helped open the door for the home side to hit the scoreboard first.
Kraev had given up possession and Harrison Sawyer reacted the best, delivering a through ball to a breakaway Jakolis.
Thomas read the play wrong and ran towards the edge of the penalty box, allowing Jakolis to easily slot the ball past him.
Jakolis finishes the season as Macarthur's leading goalscorer with 10 to go with his 12 assists.
He becomes the fourth player in the league's history to reach double figures in both goals and assists in a single season, joining Aaron Mooy, Marco Rojas and Craig Goodwin.
Sawyer sent a scare through the Bulls camp after going down in the 28th minute with what looked an achilles injury after charging into the attacking third for a goalscoring opportunity, before aggravating it further following a challenge against Pantazopoulos.
Sawyer was substituted at the break after seeing out the first half, replaced by Liam Rose.