Haag crossed the line behind Norwegian star Marit Bjørgen, who added to her sprint crown.
“It’s so fantastic! It hasn’t sunk in yet. I’ve rarely felt better, this is a victory for me,” Haag told Sveriges Television.
Poland’s Justyna Kowalczyk took bronze as Bjørgen made it two titles in three days.
Bjørgen, a 28-year-old from Trondheim, crossed the line in 39min 58.1sec to see off Haag by 8.9sec with Kowalczyck 0.4sec further back.
The champion also won a bronze in the 10km as she tries to keep the Norwegians on the trail of Germany, who stand second in the overall medal standings behind the United States while keeping hosts Canada at arm’s length.
Bjørgen, who appeared to find her second wind in the final three kilometres, showed her versatility in dominating a course where racers have to do 7.5km in classic style then switch skis and do the same again freestyle.
At the half-way mark Charlotte Kalla, champion over 10km, trailed by just 28sec before she fell away but the course proved too much for 2006 champion Kristina Smigun-Vaehi of Estonia, who threw in the towel.
Italian Arianna Follis and Finn Aino-Kaisa Saarinen also made challenges that ultimately petered out as Haag and World Cup champ Kowalczyk dug in to keep further Norwegian medal hopes Kristin Størmer Steira and Therese Johaug off the podium.