WINNIPEG — Matt Nichols couldn't care less that he threw for more than 300 yards for the first time this season.

The only achievement that mattered for the Winnipeg quarterback was that the Blue Bombers clinched a playoff spot with a 29-21 victory over the Calgary Stampeders on Friday.

"Everyone puts so much stock into that number for some reason. I don't know," Nichols said of the 300-yard mark. "I care about wins. We won a tough football game tonight."

Nichols completed 24-of-33 pass attempts for 358 yards and threw touchdown passes to Darvin Adams and Drew Wolitarsky. He had no interceptions in front of 25,173 fans at Investors Group Field, which was covered in fog for the second half.

The Bombers' fifth straight victory (10-7) also eliminated the Edmonton Eskimos (8-9) from post-season play. Winnipeg is third right now, but doesn't yet know where it'll finish in the tight CFL West division standings. It ends the regular season in Edmonton next weekend.

Calgary (12-5), which has lost three straight, can still finish first in the division if Saskatchewan (11-6) loses or ties its Saturday game in B.C. (9-7). If the Roughriders win, the Stampeders can get top spot if they beat the Lions in B.C. the following weekend.

"Listen, we know we've lost three in a row," Calgary head coach Dave Dickenson said. "We understand that we can't keep doing the same things. We've got to look at trying to get some momentum.

"We've still got a chance to be first in the west. We've got to go out and play a good game against B.C."

Quarterback Bo Levi Mitchell was 22 for 35 for 274 yards with a touchdown toss to Markeith Ambles and no picks for Calgary.

The Stampeders last lost three in a row at the end of last season after already clinching first place. Mitchell didn't play that final game.

"It's something we haven't felt in a long time and it's something we're going to have to fight back from," Mitchell said. "And I think it's going to create something good for us going into the playoffs."

Mitchell had been 6-0 in Winnipeg and the Bombers hadn't defeated a Stampeders squad at home since July 2009, a string of nine victories.

He was asked how difficult it was playing in the fog.

"That's not fog. That's smoke from them blowing off their guns," Mitchell quipped.

Adams caught a 50-yard TD pass and Wolitarsky hauled in a 60-yard reception for Winnipeg's touchdowns through the air. Backup quarterback Chris Streveler had a two-yard run for a TD.

Adams finished with five catches for 126 yards, giving him 1,028 receiving yards. It's his second straight year eclipsing the 1,000-yard mark.

"I could have had one catch, I'd have been happy," Adams said. "The focus tonight was to win the game."

Justin Medlock booted a pair of field goals from 13 yards out and a 35-yarder for Winnipeg. He made a pair of converts and Nichols was sacked on a two-point convert attempt.

Backup Calgary quarterback Nick Arbuckle pushed in for a two-yard touchdown and Ambles had a one-yard TD catch. Two Calgary converts were unsuccessful. Rene Paredes made field goals from 43, 31 and 51 yards.

Calgary led 3-0 after the first quarter and 12-6 at halftime, but Winnipeg went ahead 26-18 after the third quarter.

Both teams scored field goals off turnovers in the first half. Winnipeg ended up forcing three Calgary fumbles.

Bombers linebacker Adam Bighill caused a key turnover in the third quarter when he made Stamps running back Don Jackson fumble. Streveler used the change of possession to punch the ball into the end zone at 13:42 for a 26-18 lead after the convert.

"Those are huge momentum shifts in the game and securing points for our offence," said Bighill, who had three tackles. "Those are the things you've got to do to help change momentum in a game and beat great teams."

The Stampeders got to Winnipeg's five-yard line late in the fourth, but on third-down and five, Mitchell's pass to Eric Rogers popped out just before the goal-line. After a review, the incomplete call on the field stood and it was a Calgary turnover with 2:49 remaining in the game.

"I'm biased, I'm the guy throwing the ball," Mitchell said. "I thought once I saw it on the screen, I thought for sure it was a touchdown. I thought for sure it was a catch if they don't call it a touchdown, I'm kind of distraught in how they didn't call it a catch."

Winnipeg took over and ran time off the clock until Paredes booted a 51-yarder with three seconds left.