Marco Russ fired Frankfurt ahead in the first minute, only for Vladimir Darida to equalize with a penalty in the 62nd and Petersen to score on a counterattack three minutes later. Petersen claimed his second in the 70th and completed his hat trick in the 88th.
Freiburg rose to 13th place with Dortmund bottom ahead of its game at Bayer Leverkusen later.
Also Saturday, Borussia Moenchengladbach won 1-0 at Stuttgart to go provisionally third and Schalke kept pace by defeating Hannover 1-0. Schalke striker Klaas Jan Huntelaar was sent off late.
Mainz routed promoted Paderborn 5-0 and Cologne won 2-0 at Hamburger SV.
All content copyright ©2015 Daily Journal, a division of Home News Enterprises unless otherwise noted.