The 2006 Ballon d’Or winner’s team were level for all of 105 seconds, as Gabriel Martinelli drove down the left for the Gunners, found Kai Havertz with his cross, which the German cushioned for Declan Rice, who blasted past Ivan Nevistic.
Gabriel’s towering header came close to doubling the lead inside 15 minutes, but fell just wide as Arsenal looked dangerous as ever from corners.
Rocked by the early goal, the Croatian champions found their feet in defence as the half grew on, doing enough to thwart sights of goal for Raheem Sterling, Havertz and Rice.
On rare ventures outside their penalty area, Dinamo were using Martin Baturina to full effect on the counter-attack, but David Raya remained untested in the Arsenal goal.
Mikel Arteta’s men had another chance to double their lead late in the half, but Nevistic was well-positioned to deal with Martinelli’s effort.
Arsenal were a goal away from winning three successive UCL matches by at least two goals for the first time, but despite territorial dominance, they were struggling to find a way through Dinamo’s dogged defence after half-time.
That was until the 66th minute, when a Martinelli cross was met by Havertz, who gave the goalkeeper no chance with his header, putting the North Londoners 2-0 up with only the third shot on target of the match.
The home side kept the pressure on in the final minutes, and that persistence was rewarded in added time, when Leandro Trossard found space on the left and his deflected cross was bundled home by Martin Odegaard.
Their eighth home win and eighth home clean sheet in the tournament since the start of last season took the Gunners third in the table and three points clear of ninth place. Dinamo slip to 26th, two points shy of 24th ahead of the final matchday, as they remain winless on English soil.