Germany coach Joachim Low had urged the world champions to mark their last fixture in 2014 by beating the European champions in Vigo, but the game looked destined to finish goalless until Kroos struck after 89 minutes.
Spain’s substitute goalkeeper Casilla ought to have kept out the Real Madrid midfielder’s long-range effort, but the ball skidded off the surface and bounced over his body and into the net to ensure Die Mannschaft ended their World-Cup winning year on a high note.
Low was without the likes of Andre Schurrle, Marco Reus and Jerome Boateng, while Thomas Muller went off with an injury in the first half as Germany sent Spain crashing to their first home defeat under Vicente del Bosque.
La Roja were also missing key players such as Andres Iniesta, Cesc Fabregas and David Silva and the hosts ended what has been a difficult year with a defeat at Estadio de Balaidos Vigo.
Nolito was handed his Spain debut on his home ground and the Celta Vigo winger’s performance was a plus point for Del Bosque on a dismal night in the rain.
Alvaro Morata and Juan Bernat also made their first starts for the hosts, while Ron-Robert Zieler got the nod to start in the absence of Germany goalkeeper Manuel Neuer and striker Kevin Volland made only his second international start.
Sami Khedira was passed fit and took the captain’s armband.
Nolito had the crowd on their feet just 12 minutes in when he turned away from Antonio Rudiger and tried his luck with a curling right-footed strike from outside the area that Zieler palmed away for a corner.
Germany responded and Mario Gotze’s volley forced a fine save from Iker Casillas after the midfielder combined well with Bayern Munich team-mate Muller.
Muller had been off for treatment after picking up a knock in a challenge with Sergio Ramos and was replaced by Karim Bellarabi after only 22 minutes.
Zieler booted the ball away in unorthodox fashion with Nolito waiting to pounce, then Sebastian Rudy fired over the crossbar at the other end as the rain continued to lash down.
Bernat casually diverted Volland’s dangerous cross over his own bar from close range just before the break as the opening goal remained elusive.
Ignacio Camacho came on to make his Spain bow at half-time, with Raul Albiol and Marc Bartra also introduced as Sergio Busquets, Sergio Ramos and Gerard Pique made way.
Nolito was relishing the occasion and he forced another save from Zieler with a free-kick that was destined for the top corner until the Hannover keeper again denied him a debut goal.
Espanyol keeper Casilla replaced Iker Casillas 13 minutes from time and he was left red-faced when Kroos’ long-range effort beat him a minute from time to give Germany the victory.