Have any St. Louis Cardinals players hit three or more home runs in a single game in the last 20 years?
Four St. Louis Cardinal players have hit 3 or more home runs in a single game within the past 20 years:

Albert Pujols against Chicago in 2004
Albert Pujols against Pittsburgh in 2006
Albert Pujols against Cincinnati in 2006
Albert Pujols against Chicago in 2010
Matt Carpenter against Chicago in 2018 
Paul DeJong against Pittsburgh in 2019
Paul Goldschmidt against Milwaukee in 2019