City had Zabaleta to thank again for clearing a header off the line when Claudio Bravo flapped.
In the second half, City dominated, with Aguero hitting the post, but were frustrated until the Argentine's 24th goal of the season gave them breathing space.
City remain in contention for three trophies with the season approaching its end, but will be happiest there were no injuries to make their Champions and Premier League pursuits any more difficult.
Is Pep Guardiola warming to Sergio Aguero? Having dropped him on occasion, and been less than committed towards giving a firm answer on his City future, he embraced him at the final whistle and gave him some warm words. Without Gabriel Jesus, and Aguero's crucial second goal, Guardiola may have reappraised how much he needs teh striker for longer than just the next three months.
Manchester City's Sergio Aguero and Nicolas Otamendi after the match
Image credit: Reuters
MAN OF THE MATCH
Leroy Sane (Manchester City): Like the rest of his attacking colleagues, he opened up Boro with ease, using his pace and technique to thread his way behind the defence. Like the rest of his colleagues, he was profligate too. Sane will learn to become more efficient, but he offered more than enough to help dominate Middlesbrough.
3' - GOAL! Middlesbrough 0-1 Manchester City. Silva scores - Toure pings a ball to Zabaleta on the right, he plays in a cross to Sterling, who mishits, and Silva stabs it in.
22' - BRAVO ERROR - Corner for Boro on the right. Leadbitter takes, and Bravo is rescued as Zabaleta saves from a Gestede header. Bravo flapped at it and needed his skipper to block.
37' - STUANI HEADER - A bit of Boro possession now sees a cross looped in for Stuani to meet, but he glances it to the right of Bravo, who bats it down into the ground and claims.
49' - SILVA MISS - Almost an exact replica of Silva's goal. Toure finds an unmarked De Bruyne on the right, his cross is missed by Stering, it comes to Silva, and he takes one touch before firing over.
51' - AGUERO SHOT - Aguero hits the post. Sterling's pass from the right gives him a great chance, but he finds the base of the woodwork.
67' - GOAL! Middlesbrough 0-2 Manchester City. Aguero scores - Sane is found in space by Clichy. He takes a look up, measures a low cross in for Aguero and he has a simple finish to shoot past Guzan.
Boro have scored just once in their last six matches.
Manchester City have reached the FA Cup semi-finals for the third time this decade (2011 and 2013), having failed to make any in the 1990s and 2000s.
Pep Guardiola has now reached a semi-final in all eight of his seasons in club management