City should have netted more in a match they controlled for large periods, but Pep Guardiola will be satisfied having watched his team ease into the last four of the competition.
During their midweek Premier League clash with Stoke City, City struggled to create many opportunities during open play but it took them less than three minutes to get on the scoresheet in the North-East.
Middlesbrough were second best for much of the opening stages but they came agonisingly close to an equaliser when Rudy Gestede rose above the City defence to direct a header on goal, but a combination of Claudio Bravo and Zabaleta kept the ball out.
It gave City a chance to take stock of the game and they got back into their stride towards the end of the first half with Leroy Sane wasting a glorious opportunity from eight yards out and Silva firing straight at Brad Guzan from inside the penalty area.
To their credit, Boro were showing more ambition in the final third but aside from a Cristhian Stuani header, they were not doing enough to test Bravo.
The final chance of the first half fell to Toure but after meeting Kevin De Bruyne's set piece, he could only head wide of the near post.
After the restart, City soon showed their intent to put the game to bed at the earliest opportunity but they wasted numerous chances to double their advantage.
Silva fired over from close range before Guzan pulled off a wonder save to divert Aguero's six-yard flick onto the post, while Sane was denied from an acute angle shortly after the hour mark.
Guzan was putting in one of his best performances since moving to England, and twice within a minute he was called upon to tip efforts from Silva and Sane wide of the target.
However, City's pressure finally paid off when Aguero stole a march on his marker to convert Sane's low cross into the bottom corner from six yards, and the goal effectively ended the game as a contest.
Sterling had a goal wrongly chalked off for offside when tapping home after Aguero's shot had been fumbled by Guzan, before Silva failed to make the most of an opening from 12 yards out.
Middlesbrough almost halved the deficit with 13 minutes left through a header from Fabio, but Stones was in the right place at the right time to prevent the ball from finding the bottom corner.
As the game entered the closing stages, Guzan pulled off another timely block - this time from Sterling - as he continued to keep the scoreline respectable, but Middlesbrough could not create anything else in the final third as City moved closer to the final in relatively routine fashion.