Last-placed WA were skittled for 210 before former Bulls speedster Gannon's 3-26 off six overs left the Bulls struggling at 3-37 at stumps on day one.
Queensland opener Hugo Burdon was the first of Gannon's victims when he edged the paceman to third slip.
The Bulls were 2-6 a few balls later when Marnus Labuschagne was deemed to have been caught down the leg side, despite some questions about whether he actually hit the ball.
And retired Test opener Usman Khawaja became the final victim of the day when he played 37-year-old Gannon down the leg side as well, with wicketkeeper Josh Inglis taking a sharp one-handed catch.
Matt Renshaw (12no off 60 balls) and Hugh Weibgen (6no off 20) guided the Bulls to stumps, but the pair face a big job when play resumes on Friday morning.
Warriors debutant Albert Esterhuysen finished the day with 0-2 from his three overs.
Queensland sit in second spot on the tight Shield ladder, and anything other than a win against WA would represent a major blow to their hopes of reaching the final.
WA's innings never really got going after winning the toss and electing to bat.
Sam Fanning top scored with 62 off 132 balls before spooning a catch back to Jem Ryan (3-48), while tail-ender Joel Paris (38 off 105 balls) was the next highest scorer.
Inglis (32 off 33 balls) looked on track for a half-century before his attempt to reverse-ramp paceman Jack Wildermuth resulted in an easy catch for the wicketkeeper.
Earlier, WA slumped to 2-25 after Cameron Bancroft (15) edged Ryan behind and Sam Whiteman fell for a nine-ball duck.
Cooper Connolly's run drought continued when he edged part-time spinner Matt Renshaw to slip, ending his knock on 10.
It continued a lean run of form for Connolly, who has posted scores of 2, 8, 4no, 0, 1, 0, 11no, 3 and 10 in his past nine knocks in all forms of cricket.