Match ends, Dinamo Zagreb 2, Arsenal 1.
Olivier Giroud was sent off for Arsenal as they lost at Dinamo Zagreb in their opening Champions League game.
The Gunners went behind after a Josip Pivaric shot was saved by keeper David Ospina but rebounded in off Alex Oxlade-Chamberlain.
Giroud was then sent off for a second booking when he fouled Ivo Pinto before Junior Fernandes headed in for Dinamo.
Theo Walcott superbly slotted in to give Arsenal hope but the home side nervously held on for the win.
Walcott had scored a hat-trick at the same Maksimir Stadium for England against Croatia in 2008 but, despite pulling one back, he could not repeat such heroics.
Dinamo held on to extend their unbeaten run to 42 games as they won against an English top-flight side for the first time in the Champions League.
- Relive Wednesday's Champions League action
- 5 live Football Daily podcast: Reaction, debate & social media
Oh dear Olivier
France striker Olivier Giroud has been criticised for not being clinical enough in front of goal and he only added weight to that argument against the Croatian champions.
He had a free header from a corner palmed away by Dinamo keeper Eduardo and, when he saw another effort come off a post, Giroud failed to sidefoot in the rebound as the home stopper smothered his point-blank shot.
The Arsenal forward's frustration got the better of him when he was booked for dissent after his reaction to the referee blowing for a foul against him.
It proved crucial as he was then sent off for a second bookable offence when he caught Pinto with a late challenge after 40 minutes, as Arsenal's failure to sign a striker in the summer transfer window again came into focus.
Behind the eight ball
Arsenal lost their opening game of last season's Champions League when they were beaten 2-0 by Borussia Dortmund, but recovered in a group also comprising Galatasaray and Anderlecht.
This time they face a more difficult task to make it past the group stages and keep alive their hopes of winning the competition for the first time.
The Gunners host Olympiakos next before home and away fixtures against German giants Bayern Munich.
Bayern are one of the favourites to win the competition and beat Olympiakos 3-0 as they moved to the top of Group F.
Caught out on the counter attack
Dinamo might have been the home team but they employed the tried and tested philosophy of playing on the counter-attack to try to beat Arsenal.
The Croatian champions soaked up Arsenal's pressure and, after the Gunners failed to take their chances, took the lead.
Arsenal manager Arsene Wenger made six changes from the side which beat Stoke, including dropping keeper Petr Cech and holding midfielder Francis Coquelin to the bench.
Wenger might have had Saturday's game against Chelsea, who beat Maccabi Tel Aviv in their opening Champions League game, in mind but the move backfired.
Villain of the match
Arsenal manager Arsene Wenger told BT Sport: "The first yellow [for Giroud] is a foul for us and the second is an accident. They got away with obvious fouls many times. We have to take it on the chin.
"We have enough games to come back. We have to focus to win our next home game and I'm sure we can beat Zagreb at home."
Dinamo Zagreb coach Zoran Mamic: "I was secretly hopeful we could perform a miracle as I knew how my boys had been working, living and concentrating on the task. I was not afraid it would be a catastrophe for us as I knew we would be physically up to their level.
"This is a huge reason for us to celebrate."
The stats you need to know
- Dinamo Zagreb were winless in 15 Champions League games proper before beating Arsenal, with their last win against Sturm Graz in September 1999 (3-0).
- Arsenal are playing in the Champions League for the 18th consecutive season, only Real Madrid (19) can boast a longer current streak.
- Croatian champions Zagreb have never previously qualified from the group stage in their four previous attempts.
- Last season, Zagreb became the first team to go through a Croatian top-flight campaign unbeaten.
Arsenal next play Chelsea in the Premier League in the 12:45 BST kick-off this Saturday.
- 34Dos Reis Carvalho
- 6PintoBooked at 65mins
- 8AntolicBooked at 47minsSubstituted forRogat 82'minutesBooked at 90mins
- 20PjacaSubstituted forBenkovicat 88'minutes
- 11FernandesSubstituted forCoricat 74'minutes
- 3GibbsSubstituted forCampbellat 65'minutesBooked at 87mins
- 8ArtetaSubstituted forCoquelinat 64'minutes
- 15Oxlade-ChamberlainSubstituted forWalcottat 64'minutes
- 12GiroudBooked at 40mins
- Ovidiu Hategan
- Shots on Target
Second Half ends, Dinamo Zagreb 2, Arsenal 1.
Attempt saved. Ante Coric (Dinamo Zagreb) right footed shot from the centre of the box is saved in the centre of the goal.
Foul by Joel Campbell (Arsenal).
Josip Pivaric (Dinamo Zagreb) wins a free kick in the defensive half.
Attempt missed. Gabriel Paulista (Arsenal) header from the centre of the box is too high. Assisted by Alexis Sánchez with a cross following a corner.
Corner, Arsenal. Conceded by Filip Benkovic.
Foul by Gabriel Paulista (Arsenal).
Jérémy Taravel (Dinamo Zagreb) wins a free kick in the defensive half.
Alexis Sánchez (Arsenal) wins a free kick on the left wing.
Foul by Paulo Machado (Dinamo Zagreb).
Marko Rog (Dinamo Zagreb) is shown the yellow card for a bad foul.
Joel Campbell (Arsenal) wins a free kick in the defensive half.
Foul by Marko Rog (Dinamo Zagreb).
Laurent Koscielny (Arsenal) wins a free kick on the left wing.
Foul by Soudani (Dinamo Zagreb).
Substitution, Dinamo Zagreb. Filip Benkovic replaces Marko Pjaca.
Joel Campbell (Arsenal) is shown the yellow card for a bad foul.
Foul by Joel Campbell (Arsenal).
Marko Pjaca (Dinamo Zagreb) wins a free kick in the defensive half.