On a typically dramatic night for the Portugal captain, Ronaldo fired the European champions ahead from his first spot kick of the evening in the first half.
Ronaldo missed a chance to double their lead when his second effort struck the post.
It looked a costly miss when Arturs Zjuzins equalised for Latvia in the 68th minute but William Carvalho headed Portugal back in front two minutes later, Ronaldo volleyed the third and Bruno Alves completed the win.
Ronaldo’s volley made it 3-1 and Bruno Alves headed in a late fourth.
Portugal now have nine points but remain in second behind leaders Switzerland, who moved to 12 points with a 2-0 win over Faroe Islands.