Pekka Rinne made 22 saves for the Predators (17-8-1), who have lost two straight and three of their past four.
"They were faster than us," Predators coach Peter Laviolette said. "They wanted it more. We didn't have enough guys with their hands on the rope pulling it our way. So that's what we got."
Keller gave the Coyotes a 1-0 lead at 1:40 of the second period, receiving a pass from Schmaltz and beating Rinne blocker side from the edge of the left circle.
Schmaltz, who was acquired in a trade with the Chicago Blackhawks on Nov. 25, scored his first goal with Arizona to make it 2-0 at 19:39 on a wrist shot from the right circle on the power play.
"I thought we came out flying," Schmaltz said. "We had some good looks there, and I thought we stuck with it throughout the game and didn't get frustrated. We knew it was going to come at some point. We just kept working and got rewarded."
Richardson extended the lead to 3-0 at 11:23 of the third period on a one-timer from the high slot.