Marsh - dropped on 41 on Sunday - shared a 185-run, sixth wicket stand with William Bosisto, who is unbeaten on 132 - his highest first class score and only second ton.
Marsh showed no sign of the poor form that plagued his Test series against Pakistan, bringing up his 10th first class century with a classic cover drive to the boundary.
The 27-year-old then notched up his 150 in style, by thrashing Marnus Labuschagne (2-82) over the Allan Border Field boundary for six.
But he fell to the part-time spinner a couple of balls later, caught at point to end his epic 301-ball knock that featured 19 fours and four sixes.
Bosisto, 25, maintained the rage with his 312-ball innings which featured 18 fours.
The Warriors were in trouble early in their chase yesterday, reeling at 2-37 in reply to the Bulls' 9(dec)-448 and were soon down 3-42.
It could have been worse but Marsh made Queensland pay for their miss to share a 112-run fourth-wicket stand with Ashton Turner (48) before kicking on with Bosisto on Monday.
"From the position we were in, with the team in a bit of trouble, it is my job to stand up in those moments, and I was pleased I was able to do that for the team," WA Captain Mitch Marsh said.
WA will resume tomorrow with Bosisto and Jhye Richardson (36 not out) on the final day of the match.