South Korea's Son netted twice in Tottenham's 5-0 win at Norwich to move to 23 goals – one clear of Salah, but Egypt forward struck late in Liverpool's 3-1 win at home to Wolves.
Manchester United's Cristiano Ronaldo finished third with 18 goals in his first season back in the Premier League.
Salah's goal was ultimately in vain as Jurgen Klopp's team finished one point behind Manchester City, who scored three goals in five minutes to beat Aston Villa 3-2.
Tottenham's win confirmed a fourth-place finish, meaning they qualify for next season's Champions League.
Son, 29, said it was "incredible" to have the award.
"I can't believe it," he told the BBC. "I got really emotional. I dreamed of it as a child. Literally, it's my in hands. I can't believe it.
"Until my goal, I was really frustrated that I missed big chances. I told the players I missed the easiest chances and scored one of the toughest ones.
"I didn't give up. I wanted to score today. The team helped me a lot at halftime. They wanted to help me, you could see it today."