Vicente del Bosque’s men bossed the Group D tie from the kickoff, with a double by Juventus’ Alvaro Morata and a first competitive international goal from Nolito sealing a comfortable win.
Turkey could also face UEFA sanctions after sections of their support lit flares and threw firecrackers onto the pitch at full-time.
Spain, aiming for an unprecedented third consecutive Euros title, can seal top spot in the pool with just a draw against Croatia in their final group game on Tuesday.
Turkey need to beat the Czech Republic in their final match and hope other results go their way to have any chance of progressing as one of the four best third-placed sides from the six groups.
Before the game Turkey coach Fatih Terim had called for more “fight” from his side to keep their Euro 2016 hopes alive after an out-of-sorts display against Croatia on Sunday, and for a while his players responded.
From the half-hour, Spain moved up a gear, starving Turkey of possession and, with man-of-the-match Andres Iniesta pulling the strings in midfield, carving out chance after chance.
First Sergio Busquets teed up Nolito for a right-footed curler just wide of left post. Then the busy Celta Vigo winger scuffed wide under pressure after a cutback from Juanfran.
On 34 minutes, though, Nolito turned provider to greater effect. Looking up, he spotted Morata unmarked in front of goal and curled a pass over the defence to the marksman whose header gave Spain the lead.
Three minutes later, Vicente del Bosque’s men went two-up, this time with Nolito as the finisher. A chip into the box by Cesc Fabregas should not have reached its target but Mehmet Topal, off-balance, headed backward to the lurking Nolito who half-volleyed on the turn past Volkan Babacan.
It was another desperately disappointing day for Turkey who had come into the tournament in fine form.