Tyler Seguin scored, and Ben Bishop made 29 saves for the Stars (38-30-6), who have lost three of their past four games (1-2-1) and lead the Avalanche and Coyotes by four points for the first wild card.
"Grubauer played excellent and kind of stole the game," Bishop said.
Johnson gave Colorado a 1-0 lead at 17:20 of the second period on a one-timer short side from the left circle. It was his first goal since Feb. 9 (20 games).
"I just had the easy part shooting the puck," Johnson said. "[Samuel Girard] does what he does and makes awesome plays, and I was the beneficiary."
Bishop thought he should've made the save.
"I was ready for it," he said. "I've played with [Johnson] before. He's just got kind of a heavy shot and just got on me quick."
Barrie made it 2-0 at 5:19 of the third period on a wrist shot from the right circle that beat Bishop blocker side off the post. The goal was Barrie's 300th NHL point.
"It's hard to really put a finger on anything," said Barrie, who has scored four goals in his past three games. "It's just one of those things that you need to take it when you get it."
Seguin cut it to 2-1 at 14:59 with a redirection off a John Klingberg shot from along the right wall, but Soderberg scored an empty-net goal at 19:11 to make it 3-1.
Dallas outshot Colorado 24-11 in the third period.
"Once we fell behind 2-0, we had more desperation," Stars coach Jim Montgomery said. "It led to more shots. In a short amount of time, the quantity of chances was better than the first two periods, but there was a lot of shots from the outside, too."