The 28-year-old Fort St. John, B.C., skater recorded a time of one minute 45.28 seconds. Brian Hansen of the United States won in 1:44.58. Koen Verweij of the Netherlands was third in 1:45.68.
Morrison, who won the bronze in the 1,500 and silver in the 1,000 at the 2014 Winter Olympics in Sochi, Russia, now has seven gold, 18 silver and 13 bronze in World Cup competition. Nine of those silver have come in the 1500, in which his lone victory was in Erfurt, Germany in 2009.
Morrison said he entered the race "with a season low for confidence and motivation" but was able to change his state of mind in time for the race.
"I got my head in the right place and decided that I was going to stick to my insane race strategy of going out fast and making myself ill with lactic acid with 600 metres to go," he said. "It's a scary thing to commit to, but it hurts a lot less in the end when it pays off with a very satisfying time."
Gilmore Junio, who won a silver in the men's 500 on Saturday, placed sixth in the second 500 on Sunday. Medallists receive cowbells instead of medals in Inzell.
Junio missed out on the podium Sunday by nine-hundredths of a second with a time of 35.05.
Jan Smeekens of the Netherlands was first, with Germany's Nico Ihle second and Dutch skater Michel Mulder third.