The 26-year-old becomes Leicester's fifth summer signing after the arrivals of Jonny Evans, James Maddison, Ricardo Pereira and Danny Ward.
Puel was in charge of Lyon in Ligue 1 in France when Ghezzal came through the club's academy.
"I'm very excited and very happy to be here. I know the coach from Lyon and this is where I want to be. It's a good club and an ambitious one too. Leicester City has many great players and I hope we will have a great season," Ghezzal told lcfc.com.
Ghezzal has made 13 appearances for Algeria and made his international debut in March 2015, playing in each of the Desert Foxes' group stage games at the 2017 Africa Cup of Nations.
Ghezzal spent just one season with Monaco where he played 35 times, including four appearances in the Champions League.
He will now link up with the Leicester squad ahead of Friday's Premier League curtain raiser against Manchester United.