Matthew Nieto added an unassisted goal late in the third to give San Jose insurance. The Sharks, who are 8-1-2 in their last 11 games, improved to 17-7-2 away from home and tied Washington for the most road wins in the NHL.
Jay Bouwmeester scored his second goal of the season late in the second period for the Blues.
Both goals for San Jose came during a 4-minute span in the second.
Donskoi banked a shot off the near post to break the scoreless tie at 3:55. He has 10 points, including four goals, in his last 12 games.
Donskoi's goal snapped a shutout streak of 96 minutes, 59 seconds, for Blues goalie Brian Elliott.
Thornton's goal at 7:15 gave the Sharks a 2-0 lead. It was Thornton's first goal in nine games and his 49th career point against the Blues.
Both teams combined for 29 shots during a scoreless first period.
The Blues' best chance came when Kevin Shattenkirk rang a slap shot off the post during an early power play.
San Jose had several quality chances late in the period, but Elliott turned away all five shots during the flurry.
Elliott made 29 saves but fell to 6-3-2 since taking over for injured Jake Allen (lower body).
The Blues have managed only five goals in their last five games. They have not scored in their last 23 power-play chances.
NOTES: St. Louis entered 8-1-1 against Pacific Division teams. ... San Jose is 22-2-1 when scoring first. ... The Blues assigned forward Ty Rattie to the Chicago Wolves on Wednesday. Rattie had three goals and two assists in 11 games with St. Louis. . Sharks forward Patrick Marleau played in career game No. 1,379, moving him past Joe Sakic for 10th all-time with one franchise. . Shattenkirk is one point shy of 200 with the Blues.