With just a one-goal lead headed to the third period, the Flames struck on the power play at 4:24, making it 3-1 when Diaz let a rocket go from the blue-line that found the top corner.
Signed as a free agent in the off-season, it was the first goal in a Flames uniform for Diaz, whose last goal came against Calgary on March 28, 2014, while he was with the New York Rangers.
Bollig made it 4-1 at 7:23, converting a pass from Joe Colborne for his first goal in 61 games. Bollig was acquired from the Chicago Blackhawks in a trade at last year's NHL Draft.
David Jones, Mason Raymond and Sean Monahan also scored for Calgary (28-20-3). Winners of seven of their last nine games, the Flames move into third place in the Pacific Division. Calgary is two points up on Vancouver, although the Canucks hold three games in hand.
Blake Wheeler and Bryan Little replied for Winnipeg (26-18-8), which has the NHL's best road record (14-8-5). The Jets have come out of the all-star break and lost four straight in regulation. They are back in action Tuesday when they play in Vancouver.
Jonas Hiller made 17 saves to earn the win and improve his record to 16-14-2.
Rookie Michael Hutchinson had 23 stops for Winnipeg. His record falls to 14-7-2. Ondrej Pavelec stopped all four shots he faced in relief.
Calgary broke a 1-1 tie two minutes into the second period on a perfectly-placed shot by Raymond.
Picking up a loose puck and bursting into the Jets end, Raymond snapped a 20-footer inside the far goal post. His seventh goal of the season was his first in nine games and just his second since way back on Oct. 19.
The goal came right after a missed opportunity for Winnipeg's Mark Scheifele, who wove around Diaz and then Dennis Wideman only to miss the net with his backhand. Scheifele is mired in a bad slump with one goal in his last 20 games.
Winnipeg opened the scoring 1:09 into the first period. After cycling the puck in the corner, Little sent a centring pass to Wheeler, who zipped a shot over the shoulder of Hiller.
The lead was short-lived as Calgary tied it three minutes later on a good individual effort from Jones, who bowled his way to the net from off the wing and saw his backhander trickle through the pads of Hutchinson.
The long breakout pass came from Mark Giordano. Playing in his 500th NHL game, he leads all defencemen in scoring with 43 points (11 goals, 32 assists).
Notes: Sven Baertschi was inserted for Calgary in place of Mikael Backlund (ill)... Continuing his recovery from shoulder surgery, Flames 2014 first round pick Sam Bennett practised with the main group for the first time. He wore a yellow non-contact jersey... Calgary placed David Wolf on injured reserve after getting a cut on his leg in his NHL debut on Saturday.