Beatriz scored the lone goal for the Brazilians, who had yielded just one goal in their previous five matches in the Olympic tournament.
"I was not going to leave this tournament without a medal around my neck," said a tearful Sinclair after the match.
Canada defeated France 1-0 four years ago to win bronze. The Brazilian women won silver in 2004 and 2008, finishing sixth at the 2012 Games. They placed fourth in 1996 and 2000.
Germany beat Sweden 2-1 later in the day to win their first-ever gold medal in women's soccer.
This is the second time Canada has won back-to-back medals in a team summer sport, following lacrosse at St. Louis in 1904 and London in 1908.
Beatriz's shot to the left corner in the 79th minute past outstretched Canadian goalkeeper Stephanie Labbé made for a tense finish, with the Brazilians drawing energy from the home crowd at the Arena Corinthians stadium in Sao Paulo, where Canada is now 4-0.
The crowd chanted "Brazil, Brazil" as the clock wound down but Canada did a solid job defending and controlling the ball during the three-minute stoppage time to seal the victory after Tuesday's disappointing 2-0 semifinal loss to Germany.
"It's a really really hard match," Brazilian coach Vadao said through an interpreter. "We knew the Canadians were very very strong, especially physically."
Canada, which downed the Brazilians 2-1 in the final of the Algarve Cup in March, evened its all-time record to 7-7-6 against them.
Friday's match was the sixth between the clubs in the past eight months, including a pair of friendlies in June.
Rose strikes 1st
The 10th-ranked Canadians showed early in Friday's meeting they were ready to compete. They had more quality possession and more pressure against Brazil, forcing the latter to turn over the ball in the first half.
Rose, Canada's youngest player at 17, opened the scoring in only her second Olympic contest.
The Alliston, Ont., native waited patiently near the Brazil net before she received a beautiful cross from Ashley Lawrence, who outraced defender Fabiana deep into the Brazilian zone.
Rose acted quickly and watched her shot deflect off the left foot of goalkeeper Barbara to the corner in the 25th minute.
Rose almost gave the Canadians a three-goal cushion at the 57:35 mark after sneaking behind coverage but her shot met the crossbar.
Earlier in the match, Sinclair nearly gave Canada the 1-0 advantage when she drilled a shot off the crossbar.
But the 33-year-old forward from Burnaby, B.C., made no mistake in the 52nd minute, one-touching a Rose pass and booting the ball to the corner for her third goal of the tourney and 165th since making her debut for Canada 16 years ago.
It was a milestone day for Sinclair, who earned her 250th cap against No. 8 Brazil.
Canada had a 5-3 edge in shots on goal while the Brazilians, who entered Friday with a tournament-leading 122 shots (48 on target), added 15 to that total.
Canadian coach John Herdman sprung a surprise by not including 22-year-old forward Janine Beckie, the team's leading scorer here with three goals, in his starting lineup. Beckie, Sophie Schmidt and Rhian Wilkinson made way for Diana Matheson, Rose and Josee Belanger.
A team spokesman said the decision not to start Beckie was tactical rather than injury-related.
Germany takes gold
Later in the day, Germany beat Sweden 2-1 to win its first-ever gold medal in women's soccer.
Dzsenifer Marozsan opened the scoring for Germany in the game's 48th minute on a free kick, and an own goal by Sweden's Linda Sembrant gave the Germans some insurance.
The Swedes cut into the deficit a few soon after when Stina Blackstenius scored in the 66th minute.
The Germans hung on from there, though the Swedes did come close to equalizing in the game's last 10 minutes.