The Pirates also ended a 16-game losing streak against the Dodgers dating to 2018 and snapped Los Angeles' six-game winning streak.
Quintana (1-1) allowed four hits and four walks while striking out five. His previous win came on Sept. 5, 2019 at Milwaukee while pitching for the Chicago Cubs.
The veteran left-hander has been plagued by injuries and ineffectiveness in recent seasons, going 20 starts and 42 appearances between victories.
"Huge," Quintana said. "It's tough to get hurt. I kept working hard. I knew this day would come one day. I'm really happy to get a win against a team like that. It's good. Just keep rolling. All the starters get confidence, and we can do it."
The Pirates finally got their first win from a starter in their 28th game, a major league record to begin a season. The old mark was set by the Baltimore Orioles in 1989 when they started 0-21.
"You guys are more enamored about (the streak) than I am," Pittsburgh manager Derek Shelton said. "We just want to get wins, regardless of who gets the credit."
Pittsburgh's last victory over the Dodgers came on June 6, 2018. Los Angeles had also won 25 of the previous 27 games between the teams.
"It's baseball," Los Angeles manager Dave Roberts said. "They outhit us and they outpitched us tonight and that's the ballgame. I thought Quintana was really good."
Julio Urias (2-2) allowed two runs in six-plus innings while scattering 11 hits. He struck out four and walked none.
Pittsburgh rookie Jack Suwinski hit his first career home run, a two-run shot to center field in the eighth inning off Robbie Erlin, to push the lead to 5-0. Michael Perez also connected for the Pirates.
"You think about it for a long time and it's still mind-blowing when it happens," Suwinski said with a smile.
Pinch-hitter Edwin Rios' leadoff home run in the ninth inning off David Bednar kept the NL West-leading Dodgers from being shut out for the first time this season.
Ke'Bryan Hayes had three hits for the Pirates while Bryan Reynolds, Michael Chavis, Yoshi Tsutsugo, Diego Castillo and Ben Gamel added two hits each.
The top six hitters in the order were a combined 13 for 23.
The Pirates opened the scoring in the fourth inning when Chavis lined a triple to center field and scored on Tsutsugo's sacrifice fly.
Perez led off the seventh with his homer, ending Urias' night. Chavis added a sac fly later in the inning.
The Dodgers put runners on first and second in the second, third and seventh innings but failed to capitalize. They left eight runners on base, though Mookie Betts extended his hitting streak to 10 games.
CALL A CAB
Triple-A Oklahoma City right-hander Ryan Pepiot joined the Dodgers before the game and was placed on the taxi squad.
Pepiot is likely to start and make his major league debut Wednesday in the last game of the series. He is 2-0 with a 2.05 ERA in six starts.
Erlin is also a possibility to make the start after being called up from Oklahoma City last weekend.
TOP PICK PROMOTED
The Pirates promoted catching prospect Henry Davis, the first selection in last year's amateur draft, to Double-A Altoona. He hit .342 with five home runs in 22 games at High-A Greensboro.
Dodgers: LF Chris Taylor left the game in the sixth inning with a left knee bone bruise. He was injured when he fouled a ball off the knee. Taylor underwent scans that showed no fractures.
Pirates: CF Jake Marisnick injured his left thumb making a diving catch and was removed for a pinch-hitter in the sixth inning. The team had no further details on the injury.
Dodgers: RHP Tony Gonsolin (2-0, 1.64 ERA) starts Tuesday night. He is holding opponents to a .188 batting average.
Pirates: RHP Bryse Wilson (0-1, 3.79) returns to a starting role after making his last two appearances in relief.
How did Marisnick make this diving catch?
Hanser Alberto rips a fly ball to center field, but Jake Marisnick runs a long way to make an incredible diving catch.