Filip Zadina scored for Detroit (12-32-4), which has lost three straight and 23 of 28 (5-20-3). Jimmy Howard made 35 saves in his 13th straight loss (0-11-2) since a 3-1 win against the Edmonton Oilers on Oct. 29.
"We did a nice job of checking, which you have to do against that team, and when they got free, [Howard] did a great job," Red Wings coach Jeff Blashill said. "We had the 1-0 lead going into the third, but they really leaned on us in that third period."
With goalie Jonathan Bernier (lower body) out until at least the All-Star break, Howard has started the past three games. He allowed five goals in a 5-1 loss to the Buffalo Sabres on Sunday and was pulled in the first period of an 8-2 loss at the New York Islanders on Tuesday.
"This isn't the outcome we wanted, but I thought it was a good effort," Howard said. "This was absolutely a better game than I had against the Islanders. That was embarrassing."
The Red Wings took a 1-0 lead on Zadina's power-play goal at 3:29 of the second period. Zadina, moved to the second power-play unit for the game, scored through Givani Smith's screen.
"Givani is a huge guy (6-foot-2, 210 pounds) and he really takes the goalie's eyes away when he's in front of the net," Zadina said. "It was a pretty easy goal because I don't think the goalie ever saw a thing."
Rust tied it 1-1 with a power-play goal at 3:36 of the third period. He took a pass from Malkin and his wrist shot from the right circle went off Howard's glove for his first 20-goal season.
"Bryan's really good on the power play, but his entire offensive game has really evolved across the board," Penguins coach Mike Sullivan said. "I give him all the credit in the world for the work he has put in."
The Penguins nearly took the lead at 14:15 but Howard deflected Zach Aston-Reese's shot onto the crossbar.
"Jimmy was great for us tonight, and that's what every team needs," Larkin said. "He made some huge saves to keep us in the game."