The deal, which is the largest in Pirates history, contains no opt-outs and includes a limited no-trade clause, the source told Passan.
The Pirates hold a club option for the 2031 season, the source said.
The extension comes after Reynolds had requested a trade this offseason. The teams had agreed to a similar deal in spring training, but talks fell apart because of Reynolds’ request for an opt-out in the contract.
The news of Reynolds’ deal was first reported by the Pittsburgh Post-Gazette.
This season, he is hitting .294 and leads the NL Central-leading Pirates with 18 RBIs. He also is tied for the club lead with five home runs.
He is currently on the bereavement list.
Reynolds, 28, hit .302 with 24 home runs and was an All-Star in 2021. His average dipped to .262 last season, when he hit a career-high 27 homers.
Acquired by the Pirates from the Giants in a 2018 trade that sent Andrew McCutchen to San Francisco, Reynolds has a career average of .282 with 79 home runs and 257 RBIs in five seasons. McCutchen is now back with the Pirates after signing as a free agent this offseason.
The Pirates have won seven straight games and, at 16-7, have the best record in the National League entering Tuesday’s games.
Pirates, OF Bryan Reynolds reach 8-year extension