Schenn is entering the final year of his current deal that carries a $5.12-million annual cap hit. He was scheduled to become an unrestricted free agent next summer.
The 28-year-old tallied 17 goals and 54 points in 72 contests last season and added five goals and 12 points in 26 playoff games to help the Blues capture their first Stanley Cup in franchise history.
St. Louis acquired Schenn in a trade with the Philadelphia Flyers in June 2017. He's appeared in 588 NHL games, recording 154 career goals and 372 points.
General manager Doug Armstrong could have a busy summer in 2020, so signing Schenn will allow him to focus on some other key players who will need new deals.
Blues captain Alex Pietrangelo is scheduled to become an unrestricted free agent in the offseason, while young forwards Robby Fabbri and Sammy Blais, and defenseman Vince Dunn will all be restricted free agents.