The Czechs looked like they had salvaged a draw when Tomas Rosicky's long-range shot deflected into the net off a defender to level at 1-1 in the 70th minute.
But Gevorg Ghazaryan latched onto a pass deep in Czech territory in injury time and found the net with a shot that bounced off keeper Petr Cech and past a sprawling Michal Kadlec who was unable to clear his lines.
"We had a good start and a bad end," Czech coach Michal Bilek told reporters.
The Czechs dominated possession but paid the price for squandering a clutch of quality chances in a match that highlighted the home side's inability to finish.
Armenia took an early lead when a defensive error gifted the visitors possession in front of goal and Karlen Mkrtchyan's fierce drive into the top corner gave a diving Cech no chance.
The home side started the game brightly with midfielder Petr Jiracek firing over the bar with only the keeper to beat.
Armenia keeper Roman Berezovski, who was forced off through injury in the second half, also had to punch away a Tomas Sivok header later in the first half.
Italy, who play Bulgaria later on Friday, top the group on 14 points after six games, with their opponents second on 10.
Armenia have moved level with the Czechs in third on nine points after seven games.