Richard Tait gave the Premiership side the lead against the run of play just before half-time before Blair Spittal equalised midway through the second half.
Jon Obika put Saints back in front and then an own goal from Rhys Breen before a Dylan Connolly strike made it comfortable for Jim Goodwin's men.
The home side had the first chance of the game but Obika saw his shot from the edge of the box saved by James Sneddon.
The League One team responded with a Shea Gordon effort that Jak Alnwick pushed away before Brian Graham was denied by a sliding goal-line clearance from Marcus Fraser.
Thistle then threatened again via a Conor Murray strike that Alnwick gathered before Junior Morias played in Fraser but his drive lacked the power to beat Sneddon.
Thistle then replied with two great chances within a minute. Ross Docherty played in Stuart Bannigan who was blocked by Tait. From the resulting corner, Graham's header was blocked on the line by Ethan Erhahon.
It was St Mirren, though, who went in front just before half-time. Jamie McGrath sent over the corner and Tait dived to head beyond the goalkeeper.
McGrath almost came close to extending his side's advantage midway through the second half but saw his effort strike the post.
Thistle then went up the other end where Spittal, just on as a substitute, drove his team level with a shot from the edge of the box.
Saints went back in front after 75 minutes. Kyle McAllister played in Obika and he stroked home his third goal of the season.
Breen's own goal and a fine Connolly finish added late gloss for St Mirren.