Cammalleri has now scored 10 times since the National Hockey League's trade deadline on March 5 and four of them have been winners, including his goal with 7.8 seconds left in the second period. He also scored the shootout winner in Calgary's 2-1 win at home over the San Jose Sharks on Monday.
Joe Colborne, Mark Giordano and Kevin Westgarth also scored for the Flames (31-36-7), who tied a franchise record (set in 2005-06) with their 45th one-goal game of the season. They improved their record to 22-17-8 in those one-goal affairs.
T.J. Brodie had a pair of assists for Calgary, while goalie Kari Ramo made 38 saves to improve his record to 14-11-4.
Brad Richards had a goal and an assist for the Rangers (41-30-4), whose winning streak ended at five games.
Brian Boyle and Raphael Diaz also scored for New York, while goalie Henrik Lundqvist finished with 24 saves in a losing cause.
The Flames took an early 1-0 lead on a power-play goal by Colborne at 4:51 of the first period. After Curtis Glencross wired a wicked shot from the slot off the post, the puck found its way to Colborne, who backhanded a shot over the fallen Rangers goalie.
Less than two minutes later, New York appeared to tie the game when Rick Nash threw a puck to the front of the net that bounced off of Martin St. Louis's skate and past Ramo. After review, referee Mike Leggo waved off the goal after it was deemed St. Louis intentionally directed the puck into the net with his skate.
The Rangers continued to pour on the pressure, but Ramo stood his ground to stop a shot by Derick Brassard from in tight before turning aside an ensuing blast by Dan Girardi.
Giordano put the Flames up 2-0 at 16:49 of the first when he took a pass from Mike Cammalleri, snapping a shot over Lundqvist's glove hand, off the post and in.
Late in the opening frame, Ramo made a great glove save to stop a point-blank shot by Derek Stepan, who was left wondering what the Rangers had to do to score.
After stopping all 18 shots he faced in the first, Ramo allowed three goals on four shots early in the second.
Boyle opened the scoring for New York at 2:12 of the second. After tapping a feed from Derek Dorsett off the post behind Ramo, Boyle easily tapped the loose puck in the crease into a wide-open net.
Diaz tied the game 39 seconds later when his point shot deflected off Calgary's Kenny Agostino and Tyler Wotherspoon before finding its way into the back of the net behind Ramo.
Richards capped off New York's goal-scoring spree when he took a pass from Carl Hagelin and beat Ramo with a shot to the top corner to put the Rangers up 3-2.
Calgary tied things up again at 13:49 of the second when Westgarth knocked a loose puck in the crease past Lundqvist.
Cammalleri then scored with 7.8 seconds to go before the second intermission when his shot squeaked through Lundqvist's pads and across the goal-line.
St. Louis had a great chance to tie the game just past the seven-minute mark of the third period, but Ramo made a sprawling save to deny the veteran forward. St. Louis has yet to score in 13 games since being acquired from the Tampa Bay Lightning by the Rangers at the trade deadline. He has just three assists in that span.
Notes: After taking a hit from Dorsett late in the first period, Calgary defenceman Ladislav Smid left the game with an upper-body injury and didn't return. … The Flames are now 19-7-3 when scoring first this season and 19-4-2 when leading after two periods. … Calgary forward Sean Monahan is stuck on 19 goals in his rookie season. He hasn't scored in 11 games. During that same span, Westgarth and Brian McGrattan have combined for five goals.