The Bosnian international broke the scoreless deadlock in the 35th minute, and City kept a clean a sheet the rest of the way to increase its lead over third-placed Chelsea to seven points.
The Baggies were the better side in the opening 10 minutes, but Romelu Lukaku spurned a number of good chances to fire the visitors ahead.
The hosts took their time settling into the encounter but had two good chances to score via Carlos Tevez. The 29-year-old played a one-two with James Milner before his curling effort flew just inches wide of the target.
Tevez then came close to opening the scoring when he pounced on a loose ball and unleashed a ferocious shot that rattled the crossbar.
It was all City at this point, and the home side’s persistence paid off in the 35th minute when Dzeko volleyed in from a pinpoint cross from Tevez to give them a 1-0 lead.
Man City had a glorious chance to double its advantage nine minutes later, but Milner hit the post from 20-yards out.
West Brom was on the ropes and its players were more than relieved to hear the half-time whistle.
The visitors came out with guns blazing and were unlucky not to draw level when Rosenberg’s free kick caromed off the bar before Billy Jones’ follow-up was saved by Joe Hart.
It was quite a scare for the hosts and they almost conceded in the 55th minute, but once again Hart was up to the task as he pushed Morrison’s effort around the post.
The Baggies had another good opportunity to tie things up but Shane Long could not hit the target with only Hart to beat in the 80th minute.
Edin Dzeko’s goal stood up as the game winner as Manchester City clinched a Champions League spot with the 1-0 win.