Terms of the deal weren't announced, but the St. Louis Post-Dispatch reported it is worth $17.4 million.
The new contract replaces a four-year deal Steen signed as a restricted free agent in July 2010.
Steen, 29, has racked up 22 goals over 33 games this season -- second only to Washington's Alex Ovechkin with 28. He distributed 14 assist for a total of 36 points, and reeled off a 13-game scoring streak from Oct. 17 to Nov. 16.
St. Louis acquired the son of former Winnipeg Jets great Thomas Steen from Toronto 2008.
Over 570 career appearances, Steen has amassed 145 goals and 339 points.