La Roja came into this tie looking to go top of the group, one point ahead of Sweden, who have one game in hand.
It was straight into business for Spain at the Estadio de La Cartuja as they went into the break with a two-goal lead thanks to quick-fire goals from Leipzig's Dani Olmo and Manchester City’s Ferran Torres.
The second half continued with Spain dominating proceedings. However, Unai Simon's error against the run of play allowed Kosovo to pull one back in the 70th minute.
Spain restored their two-goal advantage five minutes later when substitute Gerard Moreno leaped the highest to meet Koke’s corner-kick and his header shot past Kosovo custodian Samir Ujkani.
Here are the player ratings for La Roja against Kosovo:
Spain player ratings
Unai Simon 4/10
A disappointing outing from the Atletico Bilbao goalkeeper. He gifted Kosovo a goal after his poor clearance was pounced on by Besar Halimi, who pulled one back for Kosovo with their only attempt on goal.
Marcos Llorente 6/10
An industrious outing from the Atletico Madrid man. He constantly marauded deep into the visitors’ half, joining the attack and trying to put the Kosovo defense under pressure.
He also contributed brilliantly in defense, winning five tackles while keeping his passes extremely accurate.
Eric Garcia 6/10
The Manchester City man put up a solid shift at the center of defense for Spain. He did well to ensure the visitors offered no threat to his goal but was let down by his goalkeeper. He made two tackles, one interception and two clearances before being substituted in the 86th minute.
Inigo Martinez 6.5/10
An assured performance from the 29-year-old Spain international. He paired brilliantly with Garcia to repel any threat the visitors posed in attack.
Jordi Alba 7/10
Jordi Alba was undisturbed defensively by the toothless Kosovo attack. This allowed him the freedom to constantly roam forward to support the attack. Alba provided the assist to Spain’s first goal by linking up with RB Leipzig’s Dani Olmo.
A resounding performance from the Atletico Madrid midfielder. He was dictating the pace and tempo for Spain all game. He was as effective in defense as he was in attack as he finished with one assist, alongside winning four tackles, three interceptions and three duels.
Sergio Busquets 6/10
The veteran midfielder kept the game ticking in midfield for Spain, constantly springing passes for his frontmen. He made four key passes on the night and completed all but one of his eight long ball attempts.
The Barcelona youngster had a decent outing in his second straight start for Spain. He created an assist for Spain’s second goal but fizzled out as the game wore on.
Ferran Torres 7.5/10
Spain’s most threatening attacker of the night. Torres constantly looked to put the Kosovo defense to the sword down the right flank. He doubled Spain’s lead barely two minutes after Dani Olmo opened the scoring and finished the game with three shots on target.
Alvaro Morata 6/10
Although the Juventus man had a decent shift spearheading Spain’s attack, he failed to lay a foothold in the game. He finished with no shot on target before he was hooked off in the 69th minute.
Dani Olmo 8/10
A sensational performance from the RB Leipzig man. Olmo gave Spain the lead in the 34th minute with a superb curler from inside the penalty area. He was replaced by Sergio Canales in the 82nd minute.
Player ratings for Spain substitutes
Fabian Ruiz 5/10
The Napoli man replaced Pedri in the 69th minute. He failed to make a significant contribution during his time on the pitch, but was decent at the center of the park.
Gerard Moreno 7/10
Moreno made an instant impact after replacing Morata in the 69th minute. He restored Spain’s two-goal lead six minutes after his introduction, scoring from a corner-kick to make the score 3-1.
Sergio Canales 5/10
He replaced Dani Olmo in attack for Spain but made no telling contribution.
A decent eight-minute cameo from the Manchester City man. He replaced Sergio Busquets in midfield for Spain and made 23 touches, completing 92% of his passes. Had little time to make a telling contribution.
Sergio Ramos 5/10
The Real Madrid star replaced Eric Garcia with four minutes on the clock. He made no impact on the game.