The 20-year-old striker has netted seven times for the McDiarmid Park club this season and Saints boss Tommy Wright is happy with the news.
Wright told the club's website: "I'm delighted that Stevie has extended his contract.
"To some people it may have taken a while to conclude but having spoken to the player we were always confident that the deal would be done.
"There were a number of finer details that had to be ironed out but negotiations were handled well by both parties and it's great to get it done."
The 20-year-old previously enjoyed productive loan spells at Alloa - scoring 19 goals in 22 appearances - and Hamilton Accies, where he hit 26 goals in 35 games.
His fine form for St Johnstone this season has not gone unnoticed outside of Perth, Billy Stark having called him into his Scotland U21 set-up.