Substitute Jose Reyes kept alive Arsenal's hopes of finishing fourth in the Premiership with two late goals.
Henry set up Ljungberg to score his first league goal of the season
Arsenal took the lead after 30 minutes when Freddie Ljungberg slotted in but City drew level before half-time through David Sommeil's tap-in.
Arsenal poured forward after the break and were eventually rewarded when Reyes began and ended a devastating move.
Reyes wrapped up victory with a superb finish as Arsenal closed the gap on fourth-placed Tottenham to one point.
Arsenal now go into Sunday's last-ever game at Highbury against Wigan needing to better Tottenham's result against West Ham to avoid having to win the Champions League final to clinch their place in the competition next season.
Another boost for the Gunners was Ashley Cole's first appearance since October, in front of the watching England coach Sven-Goran Eriksson.
But Arsenal's defence, featuring another England hopeful Sol Campbell, was at times unconvincing.
Seeking a first ever Premiership win over the Gunners, City made a bold start, with Joey Barton catching the eye in midfield.
But the threat of Henry was always lurking and the Frenchman's first notable contribution was to set up the first goal.
Henry jinked past Claudio Reina and threaded through a delightful reverse pass for Ljungberg, playing in his 300th game for Arsenal, to score his first Premiership goal of the season.
But City quickly got back on level terms as confusion in the Arsenal defence led to a corner, which Trevor Sinclair headed towards goal.
Jens Lehmann was distracted by Darius Vassell's attempted volley and allowed the ball to slip through his fingers, leaving Sommeil to bundle it in.
The half ended with Henry dancing past three defenders before eventually stroking a shot high and wide but aside from their star striker's brilliance, it was a strangely ponderous first-half display from Arsenal.
They looked far more incisive after the break, with Ljungberg hitting the post after 53 minutes but with the scores still level, Wenger was forced to call on Cesc Fabregas, and on his 19th birthday, the Spaniard almost had an immediate impact.
His pass found Gilberto charging through the midfield but Robin van Persie was unable to provide a typical Arsenal move with a finish.
The pressure was beginning to build, with David James making fingertip saves from Van Persie and Alexander Hleb.
Lehmann responded with saves from Richard Dunne and Micah Richards and that proved vital as Arsenal finally went ahead shortly after.
Reyes found Pires with a quick free-kick and the Frenchman slid the ball through for Emmanuel Eboue to pull the ball back for Reyes to beat James.
The substitute made sure of a vital win by sweeping home Henry's unselfish pass.
Manchester City boss Stuart Pearce:
"We were beaten by a side with fantastic cutting edge.
"Every time we crossed the ball or had a set-piece, I thought we looked dangerous but the thing with Arsenal is they hit you on the break.
"I think we gave them too much respect near our goal. Mentally and physically it's hard work, but you have to stay alert at all times."
Arsenal boss Arsene Wenger:
"It was tight but I was always confident.
"City gave everything, and Jens Lehmann had to make two good saves at 1-1.
"Ashley Cole had 90 minutes of high pace and came through well."
Man City: James, Jihai, Dunne, Richards, Sommeil, Sinclair (Croft 77), Barton, Reyna, Riera (Flood 82), Vassell, Samaras.
Subs Not Used: Weaver, Matthew Mills, Wright-Phillips.
Booked: Riera, Vassell, Dunne.
Goals: Sommeil 38.
Arsenal: Lehmann, Eboue, Toure, Campbell, Cole, Hleb (Pires 72), Silva, Song Billong (Fabregas 58), Ljungberg, Henry, Van Persie (Reyes 72).
Subs Not Used: Almunia, Djourou.
Goals: Ljungberg 30, Reyes 78, 84.
Ref: G Poll (Hertfordshire).