CHARLOTTE, N.C. — Once again, the Vikings escaped with a win. And once again they realized it might not be wise to keep living on the edge.

Kirk Cousins threw a 27-yard touchdown pass to K.J. Osborn with 5:48 left in overtime to give the Vikings a 34-28 victory over Carolina on Sunday at Bank of America Stadium. That came after they blew a 28-17 lead with less than five minutes left in regulation.

Sound familiar? Last week, the Vikings lost a 10-point lead with less than three minutes remaining before rallying to win 19-17 over winless Detroit. Greg Joseph won the game with a field goal on the final play.

On Sunday, Joseph missed a 47-yarder wide right with one second left in regulation. But the Vikings found another way to escape when they won the coin flip and took the first drive in overtime 75 yards for the winning score.

“A win is a win in this league,” Cousins said. “I think it’s not the way you want to win every week but proud of the way our team found a way. … There’s so much to be better at than what (Sunday) was. Similar to last week, you’re glad you’re learning after a win. But there is so much that we have to be better at.”

Newsletter signup for email alerts

After the game, the stats looked good. Cousins completed 33 of 48 passes for 373 yards and three touchdowns. Dalvin Cook, returning after missing time with an ankle injury, ran for 140 yards on 29 carries. And Adam Thielen caught 11 passes for 126 yards.

But the Vikings realized they should have put the Panthers away much sooner. Leading 28-17, they could have extended their advantage had Joseph not missed a 50-yard field goal with seven minutes left.

Carolina first cut the deficit to 28-20 on a 23-yard field goal by Zane Gonzalez with 4:41 remaining. The Panthers got the ball back on their 4 with 2:09 left and in mere seconds faced fourth-and-10 at the 4 with 1:54 left. But quarterback Sam Darnold hit Ian Thomas down the middle with a 41-yard pass to keep the drive alive.

Carolina converted on another fourth-down play, then Darnold threw a 7-yard touchdown pass to Ronny Anderson with 41 seconds left. Darnold, who completed just 17 of 41 passes for 207 yards, hit Tommy Tremble for a two-point conversion pass and, stunningly, the score was tied 28-28.

“Defensively, I thought we got after them all day long until that last drive where they went down and tied it,” Vikings coach Mike Zimmer said. “We’ve got work to do there.”

At least overtime provided the Vikings with a big-time reason to celebrate. Cousins drove Minnesota down the field and then hit Osborn just before the goal line. Osborn completed the play by diving into the left pylon to end the game.

“It was my turn to make a play, so that’s what I did,” said Osborn, who caught six passes for 78 yards. “Obviously, it was a huge play, but it felt really good.”

There was review by officials to see if Osborn indeed scored, but he said he didn’t need to wait on it.

“I was confident,” he said. “That’s why I threw my helmet (after the play).”

It was the second straight win for the Vikings and sends them into their bye week with a 3-3 record. They could use a break after a six-game stretch to start the season in which all but one game has come down to the final play. The latest epic was the longest of them all, lasting 3 hours, 41 minutes.

“I’m exhausted,” linebacker Eric Kendricks said afterward.

“I’m spent,” Cousins said.

“I’m tired,” Cook said.

Cook returned after missing two of the past three games, including last week’s against Detroit. He said his ankle still wasn’t fully healthy Sunday, but he wasn’t about to use that as an excuse.

“I told Coach, I was like, ‘I’m ready, give me the ball. You don’t need to hold back, just give me the ball,’ ” Cook said.

Minnesota rolled up 571 yards of total offense while Carolina had just 306. But the Vikings helped out the Panthers (3-3) in multiple ways.

A fumble by Justin Jefferson meant the Panthers had to drive just 18 yards for Chuba Hubbard’s 2-yard touchdown run for a 7-3 lead in the first quarter. Then, with Minnesota up 12-10 in the third quarter, the Panthers’ Frankie Luvu blocked a punt that Kenny Robinson ran in from four yards out to put them up 17-12.

“A guy tried to get out too soon and left a hole. … It was a big hole,” Zimmer said of the miscue.

The Vikings at least picked a good time to get their offense cranked up after failing to score an offensive touchdown in the second half since Week 1. They scored two touchdowns in a span of 1:26 late in the third quarter to take a 25-17 lead.

The first came on Cook’s 16-yard run, the second on Cousins’ five-yard pass to Adam Thielen. And with 10:15 in the fourth quarter, Minnesota extended the lead to 28-17 on 38-yard field goal by Joseph.

With Darnold struggling most of the game — including throwing an interception and losing a fumble — that should have been enough of a lead for the Vikings to comfortably hold on, right? Not exactly.

“We got this W,” Kendricks said. “We pulled through. … I’m ready to put a full game together, for sure. … Go back, watch this film, see what we did good and see what we did bad, and get right back to it.”