Adan Morales-Guerrero, 21, is charged with criminal sexual abuse, unlawful restraint, and attempted criminal sexual assault.
Two attacks were in March and the third was in September.
Police said a witness chased and caught Morales-Guerrero after the September attack.
He is being held on $200,000 bond.