Mateo Kovacic scored twice as Manchester City overcame a dogged Fulham to pick up a first Premier League win in three games.
City dominated the early stages before Raul Jimenez's outstanding backheel cross enabled Andreas Pereira to score from close range.
Adama Traore missed two big chances either side of that - being denied by Ederson in a one-on-one and then skying a shot from inside the box.
And City midfielder Kovacic made him pay.
His first was a first-time effort from a half-cleared corner that went in via a deflection.
And his second, shortly into the second half, was a much cleaner strike from the edge of the area.
There was almost a twist, as Traore beat Kyle Walker for pace before again shooting at Ederson.
In fact, City conceded several more chances before Jeremy Doku drifted in from the left and crashed a fantastic strike into the far top corner.
At that stage you thought surely City were home and dry but they left substitute Rodrigo Muniz free in the box to give Fulham renewed hope late on.
But Marco Silva's side could not muster an equaliser.
City are now unbeaten in 50 home games in all competitions, the fourth English top-flight side to ever manage that.
Kovacic gets City back on winning trail (just)
City fans unveiled a banner before kick-off in boss Pep Guardiola's native Catalan saying they want him to stay. His contract expires at the end of his season and he has been non-committal on his future.
It is an undeniable fact that Manchester City are a better team with defensive midfielder Rodri starting.
But since coming off, with a season-ending injury, at 1-0 up against Arsenal they drew that game and then were held by Newcastle in their next Premier League match.
Failure to win here would have meant three Premier League games without a win for the first time in 2024.
And for a while it was looking a real possibility.
If Traore had taken his chances it might have been 2-0 to Fulham, or even 3-0.
Kovacic and Ilkay Gundogan have been City’s double pivot since the injury to Rodri, effectively two men replacing one.
And while neither can compare to Rodri defensively, Kovacic ended up being the game's key player.
His first goal gave City a way back into the game - especially when it looked as if Fulham could score more - and his second to give them the lead came while fans were still making their way back from half-time refreshments.
Nearly everyone in the ground thought the game was won when substitute Doku struck a fantastic third from the edge of the box.
Kovacic's goals are nice but they lack that stable base without Rodri, and were left hanging on in injury time after Muniz struck.
This game has equalled the longest unbeaten run in their league history - 30 matches, level with their run from April 2017 to January 2018.
Fulham rue missed chances
City boss Guardiola was full of praise for opposite number Marco Silva and the outstanding job he has done at Fulham before the game.
But Fulham traditionally struggle in this fixture. In fact they had lost their last 16 - now 17 - meetings with City, the longest losing run one English league side has ever had against another.
However the Cottagers caused City more problems than some of the world's best teams manage at Etihad Stadium.
Their opening goal was outstanding, with Jimenez's sensational backheel enabling former Manchester United player Pereira to score.
Traore's lack of end product probably cost him a career at the very top level with Barcelona - and this would have been a different game had he managed to take his chances.
Two one-on-ones ended up going straight to Ederson, and the other big chance was one he spooned over the bar from about 10 yards.
Fulham are seventh in the table following only their second defeat of the season - and Silva will have seen plenty of reasons to be confident here.
Player of the match
After the opportunity to rate players has closed, the score displayed represents the average from all the submissions by BBC Sport users.