Cazorla converted a penalty in the 24th minute and then sent in a pin-point free kick that Giroud headed in for the second in the 66th as Arsenal ended second-place City's 12-game unbeaten run in all competitions.
City dominated possession but Arsenal for once showed the kind of defensive fortitude that so often has been missing in big away games in recent seasons. Arsenal lost 6-3 at City last season, to go with a 6-0 drubbing at Chelsea and 5-1 defeat at Liverpool.
"It reinforces the belief of the team and gives us confidence," Arsenal manager Arsene Wenger said. "To feel that we can do well is very important for a group of players."
With the loss, City fell five points behind leader Chelsea. Arsenal climbed above Tottenham into fifth place, one point behind Manchester United. In Sunday's other game, West Ham also gave its European ambitions a boost as a superb second-half display saw the Hammers beat struggling Hull 3-0.
City, despite the return of striker Sergio Aguero and captain Vincent Kompany, created little against an Arsenal team that seemed content with sitting back to defend — and did it unusually well.
Aguero played up front alone in the first half and had a quiet game, as Arsenal looked the more incisive at times and fit-again captain Kompany was made to look rusty.
Kompany gave away the penalty when Nacho Monreal attempted to play a one-two with Giroud and was impeded by the City captain as he continued his run into the box.
Cazorla took full advantage from the spot as he sent a hard shot beyond the reach of Joe Hart.
Wenger started David Ospina in goal, and the Colombian was hardly tested in the first half as City were unable to muster a dangerous response despite controlling plenty of the ball.
City boss Manuel Pellegrini reverted to his default 4-4-2 set-up after the break as Stevan Jovetic replaced James Milner and moved alongside Aguero.
The change of approach initially appeared to work and Aguero had his first serious shot with an effort that deflected wide. Jesus Navas was the first to test Ospina, the deputy keeper again preferred to Wojciech Szczesny, with a powerful effort that was parried away.
Arsenal doubled its lead after Alexis Sanchez was fouled by Jovetic. Cazorla capped his standout performance by clipping a free kick into the area and Giroud reacted quickest, losing his marker Fernando to head home in simple fashion.
City tried to hit back and Monreal cleared unconvincingly over his own bar but the hosts did not consistently trouble their visitors.
At Upton Park, Sam Allardyce's West Ham side was booed off at halftime after a dismal opening period but Hull paid the price for some lacklustre finishing as Andy Carroll, Morgan Amalfitano and Stewart Downing all found the net after the interval.
West Ham climbed above Liverpool into seventh while Hull manager Steve Bruce has now overseen just two wins in 15 league games.