Albania qualified for a major tournament for the first time in their history as victory in Armenia secured their place at Euro 2016.
A Kamo Hovhannisyan own goal set them on their way, with Ledian Memushaj adding a second from a free-kick and Armando Sadiku tapping home a third.
The win means Albania leapfrog Denmark into second place in Group I.
Portugal - who had already qualified as group winners - won 2-1 against Serbia, who had two men sent off.
Manchester City's Aleksandar Kolarov was shown two yellow cards and Chelsea midfielder Nemanja Matic was given a straight red for violent conduct after taking a frustrated swipe at Portugal's Andre Andre.
Group I Table
Portugal rested captain Cristiano Ronaldo for the game in Serbia, having already secured top spot in Group I and qualification with a game to spare.
Ronaldo's former Manchester United team-mate Luis Nani gave them an early lead with a left-foot finish, but Zoran Tosic equalised for Serbia with a powerful first-time strike in the second half.
Substitute Joao Moutinho scored Portugal's winner with a shot from the edge of the box 12 minutes from the end.
Albania's win means Denmark finish third in the group, and will face a play-off to qualify for France next summer.

LINEUP, BOOKINGS (6) & SUBSTITUTIONS (6)

Armenia

  • 12 Kasparov
  • 13 Hovhannisyan
  • 03 Haroyan
  • 05 Arzumanyan Booked
  • 02 Andonian Booked
  • 18 Mkhitaryan
  • 17 Yuspashyan Booked (Özbiliz - 45' )
  • 06 Mkrtchyan
  • 10 Ghazaryan (Pogosyan - 83' )
  • 08 Pizzelli
  • 14 Movsisyan (Sarkisov - 59' )

Substitutes

  • 01 Beglaryan
  • 04 Voskanyan
  • 07 Grigoryan
  • 09 Pogosyan
  • 11 Sarkisov
  • 15 Simonyan
  • 16 Aslanyan-Mamedov
  • 19 Hambardzumyan
  • 20 Hayrapetyan
  • 21 Manoyan
  • 22 Manukyan
  • 23 Özbiliz

Albania

  • 01 Berisha
  • 04 Hysaj
  • 05 Cana
  • 06 Djimsiti Booked
  • 07 Aliji Booked
  • 08 Basha Booked (Abrashi - 87' )
  • 14 Xhaka
  • 09 Memushaj (Kukeli - 73' )
  • 21 Roshi
  • 16 Cikalleshi (Sadiku - 59' )
  • 11 Gashi

Substitutes

  • 02 Rrahmani
  • 03 Lenjani
  • 10 Sadiku
  • 12 Shehi
  • 13 Kukeli
  • 15 Ajeti
  • 17 Shala
  • 18 Salihi
  • 19 Balaj
  • 20 Kace
  • 22 Abrashi
  • 23 Hoxha
Ref: Szymon Marciniak

MATCH STATS

Possession38%62%90minsArmeniaAlbania

Shots

1610

On target

36

Corners

22

Fouls

1213

Live Text Commentary

Full time
Full TimeMatch ends, Armenia 0, Albania 3.
90:00+3:05Full time
Full TimeSecond Half ends, Armenia 0, Albania 3.
90:00+2:34
Aras Özbiliz (Armenia) wins a free kick on the right wing.
90:00+2:34
Foul by Burim Kukeli (Albania).
90:00+0:34
Foul by Varazdat Haroyan (Armenia).
90:00+0:34
Armando Sadiku (Albania) wins a free kick in the attacking half.
89:15
Delay over. They are ready to continue.
88:41
Delay in match Odise Roshi (Albania) because of an injury.
88:05
Foul by Varazdat Haroyan (Armenia).
88:05
Armando Sadiku (Albania) wins a free kick on the left wing.
87:41
Attempt saved. Shkelzen Gashi (Albania) right footed shot from outside the box is saved in the centre of the goal. Assisted by Armando Sadiku.
86:41
Attempt missed. Aras Özbiliz (Armenia) left footed shot from outside the box is high and wide to the left from a direct free kick.
86:33Substitution
SubstitutionSubstitution, Albania. Amir Abrashi replaces Migjen Basha.
85:40
Karlen Mkrtchyan (Armenia) wins a free kick in the attacking half.
85:40
Foul by Armando Sadiku (Albania).
82:56
Offside, Armenia. Varazdat Haroyan tries a through ball, but Vardan Pogosyan is caught offside.
82:22Substitution
SubstitutionSubstitution, Armenia. Vardan Pogosyan replaces Gevorg Ghazaryan.
81:50Booking
BookingGael Andonian (Armenia) is shown the yellow card for a bad foul.
81:36
Foul by Gael Andonian (Armenia).
81:36
Migjen Basha (Albania) wins a free kick in the defensive half.