Hugo Almeida scored a hat-trick as Werder Bremen shook off their disappointing elimination from European competition during the week to end a four-game winless run in the Bundesliga in a match which finished 10-a-side.
Almeida scored in the first and 20th minutes to give Bremen an early 2-0 lead and then completed his first Bundesliga hat-trick in the 64th - before being sent off with 10 minutes to play.
St Pauli's Markus Thorandt followed in the last minute after also receiving a straight red card.
Bremen, who lost midweek in the Champions League and with it failed to qualify for even the Europa League, had collected just one draw in the last four Bundesliga matches.
St. Pauli, who have never won in Bremen, extended their winless run to seven, including six defeats.
Bremen had not scored in their last five matches in all competitions but snapped that scoreless streak after just 52 seconds with a fine through ball by Marko Marin to Almeida, who poked it past St Pauli keeper Thomas Kessler.
St Pauli almost equalised immediately but Gerald Asamoah's header bounced off the top of the crossbar and over.
The furious start continued with Kessler saving from Per Mertesacker in the fourth minute and twice denying Marin three minutes later.
Bremen keeper Tim Wiese showed his class in the 19th minute with a fingertip save from Matthias Lehmann's long-range blast.
And Almeida rewarded his glovesman with his second goal just a minute later. Marin fed a long diagonal through ball to the Portugal international, who struck past Kessler into the far left corner to make it 2-0 after 20 minutes.
St Pauli again found the woodwork a minute later as Wiese deflected Fin Bartels' volley onto the crossbar from six yards out.
Werder captain Torsten Frings was just off target from distance in the 48th minute and Bremen defender Clemens Fritz cleared Asamoah's attempt off the line in the 63rd.
Almeida struck a third time a minute later, hitting home Said Husejinovic's through-ball to make it 3-0.
St Pauli saw a goal disallowed for offside in the 72nd minute.
Bremen went a man down for the final 10 minutes as Almeida saw a red card for an elbow on Carlos Zambrano - and Thorandt was also dismissed for a bad foul on Frings.