The 21-year-old joined the Bundesliga club on loan from the Premier League champions in January and has already made 11 appearances in all competitions.
Nastasic has not missed a minute of Bundesliga or Champions League action for Schalke since his arrival, a period in which the team have lost three of the nine games he has featured in.
On Wednesday, Roberto Di Matteo's side triggered the clause which will see him remain at the Veltins Arena until June 2019.
Nastasic told the club's official website: "I am proud and happy to remain a Schalke. From day one, I was immediately a part of the team. In the future I would like to help achieve our goals as a team."
The Serbia international played his part in Schalke defeating Real Madrid 4-3 in the Champions League on Tuesday, but it was not enough to prevent them being eliminated at the last-16 stage.