St. Louis won for the third time in five games and Jaroslav Halak made 35 saves to pick up a victory for the first time in five starts.
Detroit's Chris Osgood took the loss by allowing four goals on 25 shots. He was trying for his 400th career win.
Both of Berglund's goals came in the first period, running his total for the year to eight and giving St. Louis a 3-1 lead.
Matt D'Agostini increased the St. Louis advantage early in the second period but Nicklas Lidstrom and Patrick Eaves both tallied for the Red Wings to bring them within one heading into the third.
Halak stopped 14 shots in the final period to preserve the victory. St. Louis missed two empty-net chances in the closing moments when both shots hit the post.