Bernardo looked to have been the hero at the City Ground as he fired home a sumptuous shot from just outside the box on 41 minutes.
But substitute Wood levelled matters on 84 minutes as he prodded home a Morgan Gibbs-White cross from the right.
Pep Guardiola will rue a host of missed chances, especially in the second half, as we were made to pay for not finding the all-important second.
City remain second in the table, two points behind Arsenal, after the Gunners comeback 4-2 victory over Aston Villa in Saturday’s early kick-off.
The first half was dominated by City as we enjoyed a huge bulk of the possession – but it looked like that control wouldn’t be rewarded with a deserved goal until Bernardo’s 41st minute effort.
On the other side of the coin, Forest defended resolutely for the opening period and that began on eight minutes as Joe Worrall did well to block Jack Grealish’s shot, after a fine ball from Phil Foden picked him out in the box.
There was another fine stop on nine minutes as Serge Aurier put his body on the line to stop a left-foot drive by Ilkay Gundogan.
Grealish thought he’d won a foul on 13 minutes as he went toe-to-toe with Brennan Johnson but the referee waved play on, with the Forest forward lashing at a cross-cum-shot which was cleared by Kyle Walker, making the 350th Premier League appearance of his career.
This was a rare foray forward by Forest who were struggling to get into the game against a City side showcasing their slick, smooth passing game.
In fact, in the first 15 minutes, City enjoyed 91% possession at the City Ground.
There was intense pressure in the Forest box on 19 minutes involving Foden, Grealish and Haaland but the star striker couldn’t add to his 26-goal top-flight tally as he struggled to get his shot away.
With City going forward time and again, Kevin De Bruyne fired wide from just outside the box on 28 minutes while the playmaker produced an immaculate ball in from the right to the energetic Foden two minutes later but the Forest defenders crowded him out as he looked for an opening.
There was a glorious chance to open the scoring on 33 minutes as Rodrigo glanced a De Bruyne cross agonisingly wide.
Foden flew forward and produced a delicious reverse ball into the path of Gundogan on 37 minutes but his final low shot was straight at Keylor Navas.
It would have been easy for frustration to set in at this point but City kept playing our intentional football and it was finally rewarded with a wonder goal on 41 minutes.
Bernardo had seen a 20-yard shot fly just wide two minutes earlier but, on this occasion, his strike, from a similar distance went straight and true past Navas.
Gundogan fired a shot from the left channel just wide on 47 minutes as City showed intent at the start of the second period.
Foden flew forward after a wonderful ball into his path by Gundogan a minute later and with, the goal approaching, our winger was caught in two minds, passing it into Haaland who couldn’t reach the pass as Forest cleared the danger.
It could – and really should – have been 2-0 on 52 minutes as Aymeric Laporte found space but headed straight at Navas from the closest of ranges, the goalkeeper collecting at the second time of asking.
Morgan Gibbs-White tried his luck on 54 minutes after a Forest counter-attack but his shot was high and handsome well over Ederson’s bar.
Navas got down well on 55 minutes to stop a De Bruyne flicked shot from the left flank.
There was another half chance on 57 minutes as wave after wave continued for the visitors.
Walker pinged in a superb low cross from the right flank and it was inches away from Gundogan as the ball eventually made its way out of play.
De Bruyne was annoyed with himself as he fired wide of Navas’s right-hand post from distance on 61 minutes.
The ball flew on a similar trajectory when Rodri headed wide on 65 minutes.
Haaland looked to have been pulled back by Worrall on 66 minutes but the referee dismissed appeals.
And just as it looked like the official was off to check the VAR monitor, he instead headed to the visitors dugout to book Pep Guardiola.
Haaland was centre of attention again moments later when he fired a close-range shot against the bar before blasting over with the subsequent chance.
Gundogan thought he’d doubled the advantage on 73 minutes as his central free-kick flew goalwards – but Navas tipped it over the bar.
With City striving relentlessly for a second, De Bruyne saw a shot fly high over the bar on 83 minutes.
Then the game took an unexpected turn.
Chris Wood levelled matters with the first attempt on target for the hosts, prodding home the ball from a Gibbs-White cross from the right on 84 minutes.
City still pushed for a second to win the game but Forest held firm to ensure a point apiece.
FOREST XI: Navas, Worrall, Shelvey (Mangala 72’), Colback (Williams 58’), Gibbs-White, Johnson, Freuler, Aurier (Wood 79’), Danilo (Ayew 58’), Felipe, Lodi (79’)
Unused subs: Hennessey, Surridge, Dennis, Scarpa
CITY XI: Ederson, Walker, Dias, Laporte, Bernardo, Rodri, De Bruyne (Alvarez 88’), Gundogan, Foden (Ake 89’), Grealish, Haaland
Unused subs: Ortega Moreno, Phillips, Gomez, Akanji, Mahrez, Palmer, Lewis
The Premier League is intense and electrifying – but, before kick-off, there was a moment of quiet and reflection as the City Ground fell silent in memory of Christian Atsu.
Atsu, who represented top-flight sides Everton, Chelsea and Newcastle, was found dead under the rubble of his home almost two weeks after the Turkey earthquake.
The 31-year-old, who had been playing for Turkish Super Lig side Hatayspor, had been missing since earthquakes hit Turkey and Syria on 6 February.
Before kick-off, there was a minute’s silence immaculately observed by those in the stadium – players, staff and fans.
Both teams also wore black armbands a mark of respect.
"Congratulations to Nottingham for the point that they got.
"It was a brilliant performance, we played really good but we didn't score.
"We have to score and we didn't do it and that's why we dropped points.
"For the goal we could defend better, more energy but the way we played was brilliant.
"In the first half, it should be already be two or three zero, we conceded one shot on target and we dropped points.
"It’s sad and disappointing but the way we played was really good".
"First and foremost we go to the Emirates Stadium and play the game we did, and then come here, it's unacceptable.
"If we want to compete with teams near the top we need to win. We missed a few chances and we need to do better as a team.
"We have to stick together as a group.
"We have to give credit to Nottingham Forest. They dug in and hung on.
"We have to do better."
WHAT IT MEANS
City remains second in the Premier League table.
Following the 1-1 draw with Forest, City are now two points behind Arsenal, with the Gunners having a game in hand.
Mikel Arteta’s men ensured the summit position after a comeback 4-2 win over Aston Villa at Villa Park in the early Saturday kick-off.
It’s a Champions League Round of 16 first leg clash in our next encounter.
It’s RB Leipzig on Wednesday 22nd February at the Red Bull Arena, with a 20:00 (UK time) kick-off.
In terms of Premier League action, our next game is away at Bournemouth on Saturday 25 February, kick-off 17:30 (UK).