Manchester City reached their first final under Pep Guardiola after beating Bristol City 3-2 in the second leg of the EFL Cup last-four meeting on Tuesday.
Guardiola went trophy-less in his first season in charge, having amassed 21 from his spells at Barcelona and Bayern Munich.
But the first silverware of a possible quadruple is now within his grasp after his side extinguished any hope the Championship club had of springing a surprise after Guardiola's men won the first leg 2-1.
There was a stroke of fortune about the opening goal as Leroy Sane's 43rd-minute strike was deflected in, the hosts punished for some overly casual defending.
Yet there was nothing lucky about the second goal as Sergio Aguero, scorer of a hat-trick against Newcastle United at the weekend and first-leg matchwinner, fired home from a magnificent Kevin De Bruyne pass.
Marlon Pack pulled one back for Lee Johnson's men, who knocked out Manchester United in the previous round, and appeared set to claim a draw on the night when Aden Flint levelled in stoppage time.
But De Bruyne, having received a new contract to keep him at the Etihad Stadium on Monday, quickly restored the lead, setting up a final with Chelsea or Arsenal at Wembley on February 25.
5 – Leroy Sane has either scored or assisted in five of his six appearances for Manchester City in 2018 (3 goals, 3 assists). Resolution.
Watford pic.twitter.com/R9HXgUv2AU — OptaJoe (@OptaJoe) January 23, 2018
The visitors were in control from the start and almost took the lead in fortuitous fashion as Aguero's cross from the left-hand side of the box clipped the crossbar.
John Stones then headed wide and Oleksandr Zinchenko missed the target with an errant long-range drive before Luke Steele was finally forced into action to deny David Silva with a strong save down low to his left after the Spaniard exchanged passes with Sane.
De Bruyne dragged wide and Bernardo Silva cut in from the right to force Steele into further action before the break.
But just as looked as if the promotion hopefuls would reach the interval on level terms, they were undone by a disappointing piece of defending as Hordur Magnusson was dispossessed by Bernardo Silva as he attempted to shepherd the ball behind, with the Portuguese then finding Sane, whose effort was inadvertently turned into the net by Flint.
And the tie was put to bed in fine fashion four minutes into the second half.
David Silva and Sane combined to start a counter that was finished off as De Bruyne artfully turned and switched the play with a pinpoint cross-field pass for Aguero, who took it in stride and rifled across Steele and into the bottom-left corner.
14 – Kevin de Bruyne has provided 14 assists for Manchester City in all competitions this season; more than any other player in the Premier League. Distributor. — OptaJoe (@OptaJoe) January 23, 2018
De Bruyne would have made it 3-0 three minutes later if not for the impressive reflexes of Steele, but the scoreline was made to look less comfortable in the 64th minute when Pack rose magnificently and powered an excellent header back across goal and beyond the dive of Claudio Bravo.
Hope of a miraculous turnaround was bolstered when Flint stabbed home from Bobby Reid's header in the fourth minute of added time, but it came too late and De Bruyne restored order in the dying embers as the tapped in following good work down from the left from Sane.