The contract, signed during the weekend, calls for the Penguins to pay the 24-year-old $30 million through the 2017-18 season, NHL.com reported.
"I love everything about what goes on here and how we play the game," Neal was quoted as saying on the team's Web site. "I just couldn't see myself anywhere else."
Failure to sign Neal would have made him a restricted free agent July 1.
"As we've gotten to know Neal over past year, he really fits with our group," Penguins General Manager Ray Shero said. "It's really difficult to find players like this. Neal has size, uncanny release, heavy shot, goes to the net hard, can skate. There's a lot to like even beyond the 30 goals."
The all-star forward, who was acquired by the Penguins from Dallas a year ago, has 30 goals and 27 assists in 59 games this season and has scored at least 20 goals in all four of his NHL seasons.