Werder badly needed a break after shipping eight goals, including five at home to Borussia Dortmund two weeks ago, in losing their previous two matches since the winter break.
This time their problems were more in attack as they repeatedly got themselves into good scoring positions but could not find the final touch until the dying mintues.
The game appeared set for a goalless draw when Werder defender Sokratis Papastathopoulos's header was cleared off the line by Manuel Schmiedebach 10 minutes from time.
The home team finally broke through when Eljero Elia worked an opening on the right and his low cross was turned in by Petersen at the near post with five minutes left.
Petersen then provided the coup de grace with a fierce volley from just inside the area three minutes later, his ninth league goal of the season.
"The win was absolutely deserved. We did things better than before and the team has reacted well," said Werder coach Thomas Schaaf.
Werder climbed to 11th in the 18-team table with 25 points from 20 games, one point and one place behind their opponents.