The 21-year-old Croat endeared himself to CSKA fans by scoring the only goal in a 1-0 Champions League win over Real Madrid in Moscow in October. He finished with eight goals from 31 games for the season.
CSKA says Vlasic has signed a five-year deal through 2024.
Vlasic joined Everton in 2017 from Dinamo Zagreb and played 19 games the following season before being loaned to CSKA.
He has played five times for Croatia, including in the 3-2 Nations League win over Spain in November.