The 30-year-old forward was set to become an unrestricted free agent after next season. Iginla will make $7 million every year of his new deal.
He had a team-best 39 goals and 94 points in 70 games last season. He has 324 goals and 340 assists in 778 career regular-season games.
The Flames have also confirmed that they have re-signed defenceman Robyn Regehr to a $20-million, five-year deal. Regehr will make $4.5 million in the first year of the deal, then $3.5 million and then $4 million throughout the remainder of the contract.