Pole Stoch was second after the first round but won with 466.6 points when leader Andreas Wellinger became unstable in the air on his last jump and dropped to 18th.
And Austrian Kraft could only finish fifth, meaning his World Cup lead is now only 31 points with two events remaining.
Second place was claimed by 44-year-old Noriaki Kasai who broke his own record as the oldest man to make a World Cup podium.
The Japanese jumper finished second on 448 points, with Austrian Michael Hayboeck third on 430.4.
The battle for third looks like it will also go down to the wire with current occupant Daniel Andre Tande failing to pick up any points in Vikersund as he finished 32nd.
He stays on 1181 points while fourth-placed Andreas Wellinger of Germany finished 18th to edge closer as he moved onto 1001.
Read the original article on Eurosport: Stoch slices Kraft's lead with Vikersund victory