The visitors struck first after the Blues had gone close a couple of times, with Andreas Pereira scoring for the Cottagers on 26.
But Kovacic levelled six minutes later and scored his second two minutes into the second half.
Fulham, impressive throughout, went close to levelling on a couple of occasions, with sub Doku grabbing a superb late third to give City breathing space.
However, a late strike by Rodrigo Muniz ensured Fulham were in the game up until the final kick of the game and were arguably the best team City have faced at the Etihad this season.
It also meant the Blues have gone 30 Premier League games without defeat - equalling the Club record in the process.
What happened?
City could – and probably should - have been two goals up inside the first four minutes.
First of all, the ball fell kindly for Ilkay Gundogan who fizzed a low angled shot narrowly past the right post, and moments later Erling Haaland found space behind the Fulham defence but sent his shot just wide of the same upright.
In fact, it was almost total City domination for the first 17 minutes until Adama Traore broke clear but was denied by a fine Ederson save.
The Blues continued to probe without really testing the Fulham keeper and were made to pay on 27 minutes, when a hopeful header from Alex Iwobi found Raul Jiménez who then back-heeled the ball into the six-yard box for Andreas Pereira to prod home from a couple of yards.
A Fulham counterattack down the right minutes later should have resulted in a second goal, but Traore shot over with just Ederson to beat.
It had all been against the overall run of play, but the Blues had been uncharacteristically sloppy in possession and lacking sharpness in the opposition box.
But the champions were level with the next attack on 32 as a City corner was half-cleared to the edge of the box and Kovacic thumped home a powerful rising shot from 15 yards to make it 1-1.
There were half-chances at either end in the time that remained, but the teams went in level at the break.
That parity last just 90 seconds of the second-half.
City were out of the blocks fastest and Jack Grealish‘s deep cross found Bernardo who cleverly teed up Kovacic to curl a shot past Bernd Leno from 12 yards for his second of the game.
City went looking for a third, but Fulham were a constant danger on the break.
Kyle Walker and Doku were introduced just past the hour in a tactical switch by Pep Guardiola, but the visitors continued to counter in numbers.
On 68 minutes, Traore again broke clear and was once more denied by a fine Ederson save - the warning signs were clear and recurring a little too frequently for the home support.
And only a superb block by Josko Gvardiol prevented Jiménez levelling on 76 minutes as the visitors continued to impress.
Another tactical tweak was introduced on 79 as Phil Foden was replaced by John Stones, with Guardiola clearly concerned by Fulham’s growing threat.
The Blues needed a third to put the game to bed - and on 83 minutes, that’s exactly what we got.
Rico Lewis drove forward before playing the ball to Doku on the left - the Belgian then cut inside before arrowing a thunderous shot into the top right corner to make it 3-1.
It was a super strike and the timing could not have been better.
But the contest was not quite over - with a minute of normal time remaining Rodrigo Muniz also thumped a powerful shot home to ensure the time that remained was edgier that it perhaps should have been.
WATCH: City 3-2 Fulham: Brief match highlights
Teams
CITY | Ederson, Lewis, Akanji (Walker 62), Dias (C), Gvardiol, Kovacic, Gundogan (Nunes 89), Bernardo, Foden (Stones 79), Grealish (Doku 62), Haaland
Subs: Ortega Moreno, Carson, Savinho, McAtee
FULHAM | Leno, Tete (,Castagne 89), Andersen, Bassey, Robinson, Lukic, Berge (Cairney 65), Pereira (Smith-Rowe 65), Traore, Iwobi (Nelson 77), Jimenez (Muniz 77)
Subs: Benda, Diop, Reed, Wilson
BLUES PASS TOUGH TEST
This may have been our 17th win over Fulham in succession, but there have been few that were harder than this.
Marco Siva’s men broke with purpose and speed on so many occasions, it will have been a concern to the City boss.
Ederson made at least two excellent stops to keep Adama Traore out and both Ruben Dias and Gvardiol made superb blocks when a goal seemed certain.
This was a good game to win going into the international break - and one the Blues could have lost on another day.
kovacic reaction
“It means a lot because my wife is pregnant so it was great to get some goals for the little one. It’s nice to score but the most important thing is the team and that we won today.
“It is never easy to play in the Premier League and today we showed great character. [It was a] good game for us.
“We play every three days and every game is a tough one. It is not easy and we have to adapt to the schedule. It is what it is.
“We have to be in top form every day. We could have conceded an equaliser but thankfully we have Ederson in our goal.”
Pep reaction
“It was intense, it was tight, chances for them, chances for us. We started well and created many chances and it was tougher when they went to five at the back. It was a risk to manage it but in the end we did.
“The two with Kovacic goals were good when they had five at the back because only the striker can defend him in that situation and that makes the transitions less dangerous. We used that weapon and Kova did really well.
“[Doku’s goal] was really, really good. We always talk about his ability to dribble but it is then about the final pass, that last action. I was diagonal to him [when he hit the shot] and the ball made an incredible curve effect. Really happy for him. The last game against Bratislava he was really good and today as well.”
Man of the Match
Mateo Kovacic‘s two-goal salvo was the difference in a tight game that could have gone either way.
The Croatian has not only done a solid job filling Rodri’s boots in recent weeks, but is now adding goals to his game - something he has never really done throughout his career.
What it means
City remain second in the Premier League table, a point behind leaders Liverpool and level on points with Arsenal in third.
The Blues’ have the same goal difference as the Gunners but have scored more goals.
What’s next?
City won’t be in action now until October 20 when we travel to Molineux to face bottom-of-the -table Wolverhampton Wanderers in the Premier League.
Gary O’Neil’s men have just one point from their seven games - even if their performances have merited more.
Then City will host Sparta Prague on 23 October in the Champions League.
Stat zone
City have now won each of our last 17 meetings with Fulham in all competitions, the longest winning run one English league side has had against another in history.
City are unbeaten in our last 50 home games in all competitions (W41 D9) since a 2-1 loss to Brentford in November 2022. We are the fourth different English top-flight team to go 50+ without defeat at home after Liverpool (85 between 1978-1981), Chelsea (74, 2006-2008 and 58, 2004-2006) and Sunderland (50, 1890-1893).
City are now unbeaten in our last 30 Premier League games (W24 D6), and have equalled our longest run without defeat in our league history (30 games between April 2017 and January 2018).
Kyle Walker made his 400th Premier League appearance against Fulham - the 44th different player to reach this milestone.
News about Man City v Fulham
City v Fulham: Full-match replay
CITY+ subscribers can now watch every kick of our Premier League meeting with Fulham... Watch more
Pep: Now opponents know they cannot leave Kovacic alone!
Pep Guardiola says that Matteo Kovacic was kept free on the edge of the box as his two goals helped City to victory over Fulham in the Premier League. Read more
City 3-2 Fulham: Brief match highlights
Enjoy bite-sized highlights from a Premier League thriller at the Etihad... Watch more
Matchday Pass: City 3-2 Fulham
Go behind the scenes at the Etihad Stadium as Manchester City faced Fulham in episode four of Matchday Pass. Watch more
Ederson has been vital to our success, says Pep
Pep Guardiola doubts City would have enjoyed the success we’ve had without the brilliance of Ederson. Read more
Fulham victory extends English football record
City’s 3-2 win over Fulham on Saturday extended our historic run of successive victories over the Cottagers. Read more
Guardiola: International break is a time to reflect
Pep Guardiola says the international break provides him time to reflect on ways City can get even better after a strong start to the 2024/25 season. Watch more
Guardiola: Fulham deserve credit
Pep Guardiola insisted Fulham should be credited for their performance and the goals they scored rather than poor defensive play by his players. Watch more
City 3-2 Fulham: Extended match highlights
Watch the best of an exciting encounter at the Etihad with our extended match action highlights... Watch more
Pitcam highlights: City 3-2 Fulham
Watch the key moments from City’s enthralling Premier League victory over Fulham from an alternative angle. Watch more
City equal our longest Premier League unbeaten run
City’s 3-2 victory over Fulham on Saturday saw us equal our longest ever unbeaten run in the Premier League. Read more