Middlesbrough 0 Manchester City 2
Sergio Aguero's sixth goal in five matches eased Manchester City into the FA Cup semi-finals as Middlesbrough's game resistance was finally broken.
Trailing after just three minutes to David Silva's opener, relegation-threatened Boro rallied and survived a second-half onslaught until Aguero's 24th strike of the season with 23 minutes remaining eventually extinguished any hope of a fightback.
It was no more than City deserved and they can now turn their attention to Wednesday night's Champions League trip to Monaco with manager Pep Guardiola knowing they may have to be a little more clinical than they were at the Riverside Stadium.
Opposite number Aitor Karanka could take heart from a spirited display by his team with keeper Brad Guzan making a series of fine saves, but the fact remains that they were once again unable to score against top-flight opposition, something they have managed only three times since December 17.
It took City a little more than two minutes to exploit Boro's recent defensive frailty and establish a bridgehead on Teesside.
Yaya Toure was afforded all the time he needed to lift a pass into the path of on-rushing full-back Pablo Zabaleta and although Raheem Sterling made a mess of his shot when the ball came in, Silva behind him did not despite Guzan's best efforts.
Boro were simply too passive in the opening stages with Toure, Silva and Leroy Sane allowed to roam freely with support from full-backs Zabaleta and Gael Clichy, and it looked to be only a matter of time before the visitors increased their lead.
They might have done just that had Sane delivered his 16th-minute cross more accurately to Aguero after being played in behind Antonio Barragan.
The home side were enjoying a measure of success with the long ball as John Stones and Nicolas Otamendi struggled to deal with lone striker Rudy Gestede in the air, and the frontman set up midfielder Marten de Roon to half-volley wide before forcing a save from Claudio Bravo with a firm 22nd-minute header.
But with Boro starting to press higher up the pitch, chances arrived in greater numbers and Cristhian Stuani called upon Bravo with a 37th-minute downward header from De Roon's cross.
City resumed in ominous fashion as Aguero saw Guzan help his 51st-minute flick from Sterling's cross on to the post and Zabaleta blasted just wide seconds later, and the keeper had to come to the rescue once again to deny Sane after he had exchanged passes with Silva.
Guzan tipped away Silva's 64th-minute shot as it headed towards the bottom corner and then repeated the feat from Sane's viciously-curling effort seconds later, but there was nothing he could do to prevent Aguero doubling the lead from Sane's inch-perfect 67th-minute cross.
The former Aston Villa man had to block another Silva shot with his legs and claw out Sterling's late goal-bound effort after Stones had cleared Fabio's 77th-minute header off the line, but the trip to Wembley had been booked long before.