Leclerc joined Ferrari for 2019 after just one season in grand prix racing with Sauber, replacing Kimi Raikkonen alongside Sebastian Vettel.
The 22-year-old secured Ferrari’s first win of the year in Belgium, although victory in Bahrain was on the cards until he suffered car problems.
He went on to win the Italian Grand Prix on his way to fourth in the standings ahead of Vettel.
Leclerc also grabbed seven pole positions, the most by any driver in 2019.
“I am very happy to be staying on with Scuderia Ferrari,” said Leclerc. “This past season, driving for the most illustrious team in Formula 1 has been a dream year for me.
“I cannot wait to enjoy an even deeper relationship with the team after what has been an intense and exciting 2019. I’m keen to see what the future holds and I can’t wait to get going again next season.”
Team boss Mattia Binotto added: “With each passing race this year, our wish to extend our contract with Charles became ever more self-evident and the decision means he will now be with us for the next five seasons.
“It demonstrates that Charles and the Scuderia have a firm future together.
“Charles has been part of our family since 2016 and we are more than proud of the results we are achieving with our Academy.
“We are therefore very pleased to be able to announce that he will be with us for many years to come and I’m sure that together, we will write many new pages in the history of the Prancing Horse.”
Leclerc established himself as the leading Ferrari driver throughout the season, and his partnership with Vettel became one of the focal points of the year.
The most recent example of the tension between them was in the Brazilian Grand Prix, where contact led to both retiring.
Leclerc and Vettel will form Ferrari’s line-up again in 2020, the German’s contract expiring at the end of next year.