The City fan-favourite opened the scoring on 16 minutes with a smart low finish.
Portugal doubled their lead after the break with Cristiano Ronaldo scoring on 65 minutes to seal the points and keep the Portuguese in touch with Group B leaders Ukraine.
The tireless Bernardo was substituted on 77 minutes and Gonçalo Guedes added a third goal on 89 minutes.
The Ukrainians continued their impressive qualification campaign with a 2-0 win over Lithuania.
Oleks Zinchenko played the full 90 minutes with the 22-year-old City left-back winning his 30th cap.
City's only England representative on duty in Prague was Raheem Sterling and it was his incisive run on five minutes that won a penalty against the Czech Republic.
Harry Kane converted from the spot but the hosts fought back to win 2-1 and inflict England's first qualification defeat in Euros or World Cup campaigns for more than 10 years.
Sterling, lively throughout, was booked for dissent in the second half.
England, who remain top of Group A, were far from their best and will hope to bounce back against Bulgaria on Monday evening.