Heading into Tuesday's home leg, the Primeira Liga outfit held a valuable away goal up their sleeve in the play-off.
The tie remained delicately poised until after half-time at the Estadio Do Dragao, before goals from Yacine Brahimi and Jackson Martinez sealed Porto's progression.
Lopetegui said the performance across the two legs against their Ligue 1 opponents was commendable.
"It's quite impressive, what we achieved against these very good opponents over these two games," the Spaniard said following their 2-0 home victory.
"Everyone played marvellously. We still need to improve a lot. I always try to help; the [half-time] break was great for us because I can't be heard on the pitch sometimes.
"We started the game well but then lost too much possession. We played very well in the second half, Brahimi's goal helped us a lot.
"We started the second period thinking we should and would score."
Lopetegui acknowledged the victory was historic, as Porto joined Real Madrid, Barcelona and Manchester United with an equal-record 19 appearances in the group stages.
"We are very happy to be in that four-team league of the teams that have qualified for the group stage of the Champions League 19 times," he said.
"Happy for the city, for the fans, for the team."
Lille boss Rene Girard conceded his men were not worthy of progressing, but did rue "bad luck" in conceding to Brahimi four minutes after the break.
"Porto are deserved winners. They had a great game. There is not much to say. They have definitely deserve to qualify," Girard said.
"We were pressured for 15 minutes, then we played just like we wanted for 20, but we had bad luck in conceding early in the second half.
"We were already expecting a strong Porto side. We didn't have any chance [on goal] in physical terms. Now we just look ahead."
The group stage draw takes place in Monaco on Thursday.
Get the best features, fun and footballing frolics straight to your inbox every week.
Thank you for signing up to Four Four Two. You will receive a verification email shortly.
There was a problem. Please refresh the page and try again.