Nagpur - Tatenda Taibu missed out a maiden Cricket World Cup century by just two runs as Zimbabwe recovered from a shaky start to post a challenging 298/9 against Canada in Nagpur on Monday.
The former captain cracked an impressive 98, putting on 181 runs for the third wicket with Craig Ervine (85) after the African side lost two wickets for seven runs.
Zimbabwe elected to bat but had a torrid start as Khurram Chohan trapped Brendan Taylor lbw off the first delivery of the match and Harvir Baidwan dismissed Charles Coventry for four.
But Canada had to wait nearly 28 overs for their next success as Taibu and Ervine applied themselves, dominating the attack.
India-born leg-spinner Balaji Rao broke the partnership when he had Ervine caught behind, but not before the batsman had smashed two sixes and six fours in an 81-ball knock for his second half-century in one-day internationals.
Rao finished with a career-best 4-57 off 10 overs.
Taibu looked set to complete his third one-day hundred before slog-sweeping Rao to John Davison at deep mid-wicket after hitting nine fours in his 99-ball knock.
"I wasn't really thinking about getting to 100. I was really thinking about the position of the team," said Taibu.
When asked about the team's score, he said: "We're quite happy. That was our target in the morning, to get around 290/300 and anything past that was a bonus so I back the bowlers to come out and do the job."
Sixteen-year-old Canadian schoolboy Nitish Kumar earlier made history when he became the youngest-ever World Cup player at 16 years and 283 days.
Zimbabwe lost to defending champions Australia while Canada were beaten by Sri Lanka in their opening Group A matches.