RIO DE JANEIRO -- Canada's Brianne Theisen-Eaton roared back to win bronze in the women's heptathlon at the Rio Games.

The two-time world silver medallist from Humboldt, Sask., was in sixth place after a rocky Day 1.

But solid long jump and javelin events allowed her to climb up to third spot going into the final event -- the 800 metres.

Theisen-Eaton finished third in the final 800 heat to finish with 6,653 points.

"I am really confident in my Day 2, so I came out with a fire, and was like 'I've got to fix this,"' she said. "I was excited to compete today and I was having fun. Was more relaxed."

"Going into this I wouldn't have said, 'Yay, I won a bronze medal,' but I'm really really happy with it," she added. "The Olympics is tough, if it wasn't just tough to get here, there would be a lot more people competing at this meet. And so I'm really proud of myself and happy with myself, even if it wasn't gold."

Belgium's Thiam Nafissatou won gold and 2012 champion Jessica Ennis-Hill took silver.

The medal was Canada's first in track and field at these Games, and matches the one medal -- a bronze in high jump by Derek Drouin -- at the 2012 London Olympics.

Earlier Saturday, star sprinter Andre De Grasse cruised to the semifinals of the men's 100 metres.

The world bronze medallist from Markham, Ont., was slow out of the blocks but turned it on in the final 50 metres to finish first in his heat in a time of 10.04 seconds.

The semifinals and final are set for Sunday night.

Defending champion Usain Bolt of Jamaica ran 10.07 to win his heat.

American Justin Gatlin had the fastest qualifying time at 10.01. De Grasse's time was third-best overall.

De Grasse will be the lone Canadian in the semis after Toronto's Aaron Brown (10.24) and Calgary's Akeem Haynes (10.22) failed to advance.

Earlier, Genevieve Lalonde of Moncton, N.B., broke the Canadian record in women's 3,000-metre steeplechase to qualify for the final, finishing in 9:30.24.