Neymar struck a well-placed right-foot shot into the left upper corner of the net in the 65th minute to break a deadlock as Brazil struggled to get near the Belarus goal despite controlling possession at Old Trafford.
Belarus opened the scoring through Brazilian-born playmaker Renan Bressan in the eighth, but Alexandre Pato equalized with a header in the 15th after a cross by Neymar, who also set up Oscar's final goal in injury time.
The victory gives Brazil six points in Group C, three more than Belarus. New Zealand and Egypt, which drew 1-1 earlier in Manchester, have one point each.
Brazil will play its last group match against New Zealand while Belarus will face Egypt.
"I'm glad that I was able to play well again and that I got the goal and the assists," Neymar said. "The victory was important to make sure we make it to the next round no matter what happens in the final match."
Neymar's goal was the 100th all-time for Brazil in the Olympics.
Brazil is trying to win its first gold medal in football. The Olympic tournament is the only significant football competition the five-time world champions haven't won. The Brazilians earned silver in 1984 and 1988, and bronze in 1996 and 2008.
Neymar's goal came after he was fouled while trying to get past a defender in the top of the area. His curling shot went in high and hit the side of the net as Belarus goalkeeper Aleksandr Gutor tried to reach for the ball with his outstretched arms.
Belarus took the early lead after a cross into the area by Aleksei Kozlov, as Bressan was open to head the ball into the far corner. Bressan was born in Brazil but moved to Belarus several years ago to play football.
Brazil equalized through AC Milan's Pato, who got in front of the Belarus defence to head in a left-side cross by Neymar, who then made a great run three minutes into second-half injury time to set up Oscar's easy goal from in front of the goal.
"We played with more intelligence in the second half, working the ball better to find the spaces we needed to find," Brazil coach Mano Menezes said. "It was the first time this team was down in the score but it was able to overcome the deficit, that was important. A team that wants to be successful needs to go through these situations and respond accordingly, and we did."
Brazil dominated most of the match in front of more than 66,000 people at Old Trafford, but struggled to get close to the Belarus area, relying mostly on balls crossed into the box. Belarus had its opportunities in a few counterattacks.
Neymar was heavily challenged and failed to pose much of a threat until coming alive in the second half. Recently signed Chelsea playmaker Oscar wasn't able to create much although he had a few good chances to score from outside the area and showed some of his outstanding skills before finally getting his goal.
Pato was the only change to Brazil's starting lineup from the 3-2 win over Egypt, when the Brazilians got three goals in the first 30 minutes but allowed Egypt to pull closer in the second half and nearly gave the victory away. He replaced Leandro Damiao.
Belarus was coming off a 1-0 win over New Zealand in its opener.
The 23-year-old Bressan was the biggest threat for Belarus. His long-range shot just missed wide in the 17th and he almost found the right upper corner with a curling shot in the 60th.
"It was a great experience to be playing against Brazil," Bressan said. "I got the goal but unfortunately we didn't get the result we needed."
Follow Tales Azzoni at http://twitter.com/tazzoni