The Latvian Olympian had a career-best free skate to move up from fifth to first in Oberstdorf as Matteo Rizzo and overnight leader Paul Fentz struggled.
The Latvian produced the free skate of his life to move up from fifth position overnight and claim victory from Italy's Gabriele Frangipani.
Nikolaj Majorov of Sweden took the last place on the podium.
Coached by Stephane Lambiel, 21-year-old Vasiljevs skated superbly to Prokofiev's 'Romeo and Juliet' to take the biggest win of his career so far.
Majorov was first to go in the last group and enjoyed a largely clean free skate, including a quad Salchow and a cartwheel.
The 20-year-old Swede clenched his fists in celebration at the end, earning a big personal best of 145.53 for a total of 218.07.
Then came Vasiljevs whose opening quad Salchow set the tone for the rest of his performance.
The Latvian was only fifth after the short program, but showed what he was capable of with a spectacular free skate.
He received a hug from coach Lambiel with the pair clearly delighted at his score of 159.83, almost six points higher than his previous personal best, for an aggregate score of 233.08.
The 27-year-old also skated well with his score of 143.03 moving him up into third place with three to go.
There was plenty to like in Matteo Rizzo's free skate to From Now On from The Greatest Showman soundtrack.
But he under-rotated his opening quad toe loop and a triple Axel with his jumping not up to its usual standard and his score of 136.99 left him temporarily in fourth place.
His compatriot Gabriele Frangipani opened with a quad toe loop-double toe loop combination followed by a quad toe loop to boost his hopes of a podium finish.
The 18-year-old's jumping deteriorated slightly over the course of his skate, but he did enough to post a personal best of 152.52 for a total of 231.65.
Paul Fentz was last to go after winning Thursday's short program but, like Rizzo, the German under-rotated and fell on his opening quad toe loop and a later triple Axel.
He put his hands to his head after what he knew was a disappointing free skate and he slipped down to sixth place with Vasiljevs coming out on top.