Rust put the Penguins ahead 1-0 with a power-play goal 49 seconds into the second. After taking a pass from Kris Letang, Rust dropped to one knee in the left face-off circle for a one-timer to the blocker side.
The first-line right wing hadn't scored in 10 games since he got an empty-net goal in a 6-2 season-opening win against the Tampa Bay Lightning on Oct. 12.
"I've been there before," Rust said. "I've gone through streaks where I haven't produced, I haven't played well. You've got to just kind of stick with the process. You almost have to simplify. You just have to keep working. I think I tried to do that. I was rewarded with a goal tonight."
Rodrigues made it 2-0 with his 100th NHL point at 7:29. Canucks defenseman Quinn Hughes sent a pass above the crease to the opposite wall, where Rodrigues collected it for a snap shot from the left circle.
Aston-Reese scored his first goal of the season, extending the lead to 3-0 at 15:20. He took a return pass from McGinn on a 2-on-1 and scored on a wrist shot from the slot.
"I think we're building," Aston-Reese said. "That third period in [a 3-1 win at the Winnipeg Jets on Monday], we were good from the first shift on. We were able to build on it tonight. ... For the most part we're trending in the right direction."
Horvat cut it to 3-1 by driving to the net around Letang for a backhand at 14:52 of the third period. He hadn't scored a point since he had two goals and an assist in a 6-3 win against the Dallas Stars on Nov. 7.
The goal ended a drought of 147:57 for the Canucks since Conor Garland scored at 6:54 of the second period in a 3-2 win against the Jets on Friday.
"We've shown bits and pieces throughout the year, lots of stretches, that we're a good hockey team," Horvat said. "We were doing a lot of good things earlier on [this season]. I don't know if we're just pressing too hard to score or just trying to play out of our element to try to turn things around."
McGinn scored an empty-net goal for the 4-1 final with 1:00 remaining.
NOTES: Canucks defenseman Luke Schenn had one assist, one shot on goal, three hits and two blocked in 14:00 of ice time in his return from missing eight games with a lower-body injury. … Pittsburgh forward Jake Guentzel had the secondary assist on Rust's goal to extend his point streak to seven games (eight points; five goals, three assists). He has scored at least one point in each of his nine games against Vancouver (15 points; nine goals, six assists). ... Rodrigues has 41 goals and 59 assists in 253 games.