Mitchell Marner had a goal and an assist, and John Tavares had two assists for Toronto (16-4-2), which was without leading scorer Auston Matthews because of a wrist injury.
It was Campbell's first shutout of the season and third in the NHL. He missed 14 games with a leg injury sustained in a 3-2 win at the Calgary Flames.
"It was awesome," Campbell said. "It's what you play for, winning the game, and the boys played amazing tonight. It was just fun to be a part of it and get back in there into battle with them. I'm just proud of this group. That was a heck of a game, and we needed it."
Marner said, "If you get a chance to meet [Campbell], he's one of a kind, he's one of the nicest guys around. But away from everything else, he's one of the hardest working. It's great seeing him come out tonight like this and do what he did. He was a huge part of that win. He had a lot of big saves for us and he keeps us calm and collected the whole game."
Mike Smith made 25 saves for Edmonton (14-9-0), which had a five-game winning streak end and was shut out for the first time this season.
"We weren't sharp enough," Oilers coach Dave Tippett said. "They played a strong game, and we weren't sharp enough to win. We got beat. You have to use this as a lesson, same as those games we were winning in different ways. We had a couple of chances early, but we weren't sharp and didn't capitalize on anything."
The Maple Leafs and Oilers are scheduled to play here again Monday and Wednesday.
Matthews is day to day. He leads the NHL with 18 goals and has 31 points in 20 games.
William Nylander scored on Toronto's only power play to make it 1-0 at 14:37 of the first period.