Western Australia twice fought back when Queensland had the upper hand, highlighted by a dogged half-century by former Test batsman Shaun Marsh on the opening day of their clash with the Bulls.

At stumps, the visitors were 7-255 after youthful allrounder Cameron Green and paceman Jhye Richardson helped the Warriors to recover from a middle-order collapse with an unbroken 84-run stand.

Green was not out 50 - his maiden first-class half-century - and Richardson unbeaten on 35 after bad light eventually stopped play.

After the Bulls won the toss, WA went from shell-shocked at 2-2 in the third over to be cruising at 2-120 before losing 5-51 including the prized scalp of Marsh for 77.

In a knock that would have made Test selectors sit up and take notice, Marsh shared a 118-run third-wicket stand with Marcus Stoinis (44) before the Bulls hit back hard.

Marsh was finally caught at bat-pad off legspinner Mitch Swepson (1-48) early in the final session after a well-crafted plan by the Bulls.

It ended an impressive 167-ball knock that lasted almost four hours and included 13 boundaries.

After the Warriors emerged from the tea break at 3-122, Cameron Gannon (4-74) and Michael Neser (2-45) helped to rip through WA's middle order before the stubborn eighth-wicket stand. Neser was again impressive as he continues to build his own compelling case for a Test bowling berth this summer.

Green was dropped on 28 off Gannon, Joe Burns putting down a difficult slips chance that would have been the best on a day of quality catching in the cordon.

WA crawled to lunch at 2-58 after recovering from their disastrous start.

Sam Whiteman was caught behind off Gannon for a golden duck off the Queensland quick's first ball and only seventh delivery of the innings.

Warriors ex-Test opener Cameron Bancroft followed quickly, dismissed for an 11-ball duck by Neser, marking the third-consecutive time in Shield cricket he had been caught at short fine leg.

Bancroft came into the match in impressive white-ball form, thrashing 72 in Thursday's one-day loss to the Bulls.

But his dismissal on Saturday reduced his Shield run tally to date to just 46 runs at 11.50.

Bulls opener Matt Renshaw was again unavailable for the Shield clash after missing the one-dayer due to a stomach bug.

The tall left-hander spent Friday on a drip in hospital.