Peter Regin scored the winner 14:10 into the third period as the 29th-place Senators, who'd lost five straight games in regulation and 11 in a row overall, sent the 30th-place Oilers to their sixth straight loss at home.
"Obviously, it's nice to get a win," Ottawa coach Cory Clouston said. "It doesn't matter who you're playing, where you're playing. We did what we needed to."
The win also put an end to a franchise-record 13-game personal losing streak by Ottawa goaltender Brian Elliott, who was forced to make just 15 saves to win his first game since Dec. 26.
"It feels pretty good right now getting that first one in awhile," Elliott said. "It takes a little monkey off your back, and you feel a little lighter in the shoulders.
"We've got to take it and enjoy it and know that feeling and remember it. We want to keep winning and getting that feeling."
Milan Michalek's power-play goal at 8:03 of the third period broke a 2-2 tie, and Regin's goal gave the Senators a two-goal lead. Penner made it a one-goal game with 2:21 left by beating Elliott for the second time, but Alex Kovalev scored his second of the game into an empty net with 1:23 to play, ending the Oilers' hopes.
While Elliott was happy to get back into the win column, there was no such relief for Edmonton's Nikolai Khabibulin, who saw his personal losing streak extended to 14 games as the Oilers dropped to 7-16-4 at Rexall Place.
"We haven't been good for him when he's been in the net," said Penner, whose two goals gave him 20 for the season. "A few unlucky breaks."
Khabibulin, whose last win came Dec. 16 against Columbus, got off to a tough start, allowing goals on the first two shots he faced.
Bobby Butler scored his first NHL goal when he fired a puck coughed up by Tom Gilbert past Khabibulin to make it 1-0 just 2:51 into the game. Edmonton pulled even 54 seconds later when Andrew Cogliano beat Elliott, but Alex Kovalev restored the lead when his shot caromed through traffic into the net at 7:27.
"If I was playing net, I'd want to stop the first 10, you know, instead of the last 10," Penner said.
"No matter how they get in, if they're great goals or unlucky, the first two, then I think it's tough for anybody to deal with, especially considering the circumstances."
Elliott provided a glimpse of why he'd gone so long without a win on Penner's tying goal at 4:11 of the second. He was too deep in the net when Penner beat him to the glove side from left wing with a snap shot for his first of the game.
"I thought the first two goals were probably not goals we would like to see go in," Clouston said.
"The positive thing, like I said, is he made some key saves on the penalty kill when we needed them. That's something to build on for him."
In the end, the Oilers didn't get enough pucks through to the net. That was especially true on the power play, which went scoreless in four attempts and is 0-for-21 in their last six games. It didn't help that the Oilers were also shorthanded on seven occasions.
"We weren't getting enough shots and we weren't getting enough offensive zone time," Cogliano said. "I think that was because of too many penalties.
"We just felt like we were killing too much. Guys weren't able to get into the game as much as we wanted them to. The guys sitting on the bench are usually the top players, right? It's tough."