The hosts scored two goals late on but Sergio Aguero and Yaya Toure, who scored twice, did enough to give the visitors only their second away league win of the season
Manuel Pellegrini's team made it seven wins from as many league matches at the Etihad Stadium against Swansea on Sunday, but they arrived at the Hawthorns with one win and four defeats in six attempts outside Manchester.
Sergio Aguero's 17th goal in as many starts this term and Yaya Toure's eighth of the season made light of those struggles. City should have had more than those two wonderfully-crafted team efforts to show for a dominant opening 45 minutes.
Toure sealed the victory with a 73rd-minute penalty - but West Brom rallied late on through Costel Pantilimon's own goal and Victor Anichebe's injury-time strike.
|VIEW FROM THE HAWTHORNS
|By Tom Davis at the Hawthorns
This was a fixture that guaranteed goals given both sides' previous clashes where just under half have produced four or more goals.
And it did not disappoint, although Manchester City will wonder how it managed to concede in a game of little chances for the home side and plenty for Manuel Pellegrini’s men.
Sergio Aguero opened the scoring and Yaya Toure doubled the lead in the first half but City could have had four by the break. Toure’s second from the spot wrapped up victory but the scoreline was not a true reflection of City's dominance. It was a strong away win but, with two goals conceded, it was not without faults.
Influential captain Vincent Kompany returned from two months on the sidelines with a thigh injury to start for the visitors as both teams made three changes to their weekend lineups.
Edin Dzeko, scorer of all three City goals in two wins over West Brom last season, was recalled and found himself instantly involved - chesting down Toure's pass for Aguero to fire wastefully wide.
But Aguero soon atoned for his error, emphatically converting Pablo Zabaleta's cutback to cap a superb ninth-minute team move.
West Brom sought an instant response and low drives from Morgan Amalfitano and Saido Berahino - fresh from signing a new contract during the week - flew wide.
But City doubled the advantage in the 24th minute with another scintillating passing move.
Aguero and Samir Nasri combined for Aleksandar Kolarov to drill a low cross from which Toure opened his body to nonchalantly side-foot a goal to mark his 150th appearance for the club.
And Toure then made it three from the spot after the break.
Steve Clarke's men displayed renewed purpose throughout the second period and, after Claudio Yacob had clipped Kolarov in the area for Toure to convert, they mounted a belated comeback.
Substitute Matej Vydra got to the byline and Kolarov's miscued clearance struck his own goalkeeper Pantilimon and nestled in the net.
Fellow replacement Anichebe then out-muscled Martin Demichelis and drilled beyond the Romanian from the edge of the area for his first Albion goal, though City had already done enough to claim all three points.