Granlund and Matt Duchene each had a goal and assist for the Predators (28-22-7), and Kyle Turris had a goal and two assists. Juuse Saros made 23 saves for Nashville.
"That was a real hockey game," Granlund said. "There was a lot of emotions and a lot of one-on-one battles. That's a fun way to play the game, and I think we played overall a pretty good hockey game and we were able to get those big two points."
WATCH: [All Predators vs. Blues highlights]
St. Louis (32-16-10), which lost its fourth straight game, was playing its first home game without defenseman Jay Bouwmeester, who had a cardiac episode during its game Tuesday. He had an implantable cardioverter defibrillator (ICD) procedure on Friday to restore his heart's normal rhythm and was placed on injured reserve.
"We're a sensitive team right now and obviously we feel for him and for each other and for his family," Blues defenseman Vince Dunn said. "The support has been really great, and it's hard to get over something like that, but when we're on the ice, we're playing for him, and that should give us more pride to do the right thing, so I guess it's a little shame on us.
"We need to step up for him. We know when he's in the lineup, he's definitely a big presence, so we're not just going to fill his role. We know that, but everyone needs to step it up and focus on making sure they're doing their job out there."
Zach Sanford, Jaden Schwartz and Jordan Kyrou scored for the Blues, who lost for the ninth time in 11 games (2-6-3). Jake Allen made 23 saves.