Tampa Bay put together a tremendous offensive performance in the second half Sunday against the Vikings, with Jameis Winston completing 17 of 22 passes for 196 yards and two touchdowns. Coach Mike Zimmer was not happy with his defense, but three interceptions saved the victory. Yet you have to be happy for the Vikings coach because of the play of quarterback Case Keenum.

It has been a tough two years for Zimmer when it comes to quarterback play, with Teddy Bridgewater missing last season because of a knee injury and Sam Bradford's status for this season up in the air.

But on Sunday Keenum continued his mastery of the Buccaneers, completing 25 of 33 passes for 369 yards and three scores for a 142.1 passer rating.

Keenum is now 3-0 against Tampa Bay, including a win in 2016 when he completed 14 of 26 passes for 190 yards and two scores and a win in 2015 when he went 14-for-17 for 234 yards and two touchdowns.

The 2015 game is the high point for Keenum in terms of quarterback rating at 158.0, and it was the second-highest single game rating over the past decade against the Buccaneers.

"Case Keenum has been lights out every time we've played him," Buccaneers coach Dirk Koetter said. "He looked like the best player in the NFL again today. He hit those deep balls and gave his receivers a chance, and they made the plays. They mixed it up well, so, hats off to them."

And the good news for Zimmer is that he knows whatever plagued the defense in the second half can be corrected, but more importantly he found a quarterback that can operate.

"Case played very well," Zimmer said. "He's had good success against Tampa Bay in the past, and he played outstanding today, made great decisions, threw the ball well, and he led the team."

When asked about their overall performance in moving to 2-1, Zimmer said there were many positives in the 34-17 win, even if he's going to be harder on some parts of the team.

"I felt really good about the offense. We gave up too many big plays defensively, and the special teams played well," he said. "I'm always going to be a little bit harder with the defense than the offense."

Defense holds up

The second-half pass defense was a mixture of good and bad, and Zimmer broke down the three picks that really sealed the game — their first takeaways this season.

They allowed Winston to get going in the third quarter, after holding him without a touchdown in the first half. And at the start of the fourth quarter, the Buccaneers had swung the momentum their way — cutting the deficit to 14 with the ball and moving down the field.

But the defense stepped up and made a big play with Andrew Sendejo intercepting a pass intended for DeSean Jackson.

"They had got it back to 14, and we were able to intercept and run in it back into scoring position on that play," Zimmer said.

The coach also talked about two other key picks, both happening in the end zone.

Harrison Smith got one later in the fourth quarter.

"That was big, you know they were starting to move the ball and get back in the ballgame, had a little momentum," Zimmer said. "It was a great play by Eric Kendricks. He tipped the ball up, and it bounced around and Harrison was there. He's a good player, and I talked to him before the game and said, 'Hey you need to get a pick today,' and he did."

And then there was Trae Waynes. It was probably as important of an interception as there is, because Zimmer said it should give the third-year defensive back a lot of confidence.

"He made a good catch as they were trying to go deep over the top," he said. "He can really run and go get some of those deep balls."

When asked to grade out the defense, Zimmer said he saw pluses and minuses.

"I thought Winston made some good throws in there," he said. "We did a good job stopping the run and making them one dimensional, which is always important. He made some good throws. We didn't do a good enough job on DeSean Jackson today. I thought Xavier [Rhodes] did a good job on Mike Evans for the most part all day long. I'm not even sure how many catches he had. We were good on third down and that was a big key."

Offense on fire

It would be difficult to think of a game that had a better combination of great passing, receiving, rushing and run blocking than the Vikings got Sunday.

Zimmer said it started up front with the offensive line.

"I thought the offensive line was outstanding today," he said. "They've got some very good rushers on their team, and we did a nice job. They zero-blitzed quite a lot, you know Case checked out of a couple plays against the zero-blitz. He threw the one touchdown to [Stefon] Diggs."

Diggs looked like a superstar, finishing with his second-highest career total of receiving yards with 173 and adding two scores. His career high was against Green Bay last year when he had 182 yards.

"Case gave him some opportunities, and he went up and got them," Zimmer said about Diggs. "He had the one long run. ... Stefon is a good player, and he means well and he's a hard worker.

"He almost had 1,000 yards last year. He had some up and down games, but they've been giving him some single coverage and he has been taking advantage of it."

Gophers get a break

The Gophers got a good break this weekend when it comes to their next two opponents in Maryland, which they play Saturday, and Purdue, which they play the following week.

Maryland, which had defeated then-No. 23 Texas 51-41 and Towson 63-17, got killed by Central Florida 38-10 after its quarterback Kasim Hill left the game because of an injury in the first quarter. He was replaced by sophomore Max Bortenschlager, who finished 15-for-26 for 132 yards with one touchdown and two interceptions.

Meanwhile Purdue, which pressed No. 8 Michigan in a 28-10 loss Saturday and has a bye this week to prepare for Minnesota, will be without its two best defenders in safety Jacob Thieneman and middle linebacker Ja'Whaun Bentley for the first half of the Gophers game. Thieneman and Bentley were ejected against Michigan for targeting in the second half, which is why they'll miss the first half.

That matchup is in West Lafayette, Ind., a place where the Gophers won in 2015 but hadn't won there before that since 2008.

Sid Hartman can be heard on WCCO AM-830 at 8:40 a.m. Monday and Friday, 2 p.m. Friday and 10:30 a.m. Sunday. shartman@startribune.com