Marc-Andre Fleury made 33 saves, including several quality third-period stops while the Ducks pressed for the tying goal.
Chris Kunitz got his 200th assist with the Penguins in his 500th game with the team. Kunitz, who was acquired from Anaheim in 2009, became the 18th player and fifth active to play 500 games with Pittsburgh.
The Penguins played their second straight game without captain
The Ducks are still looking for their first win under returning coach
Fleury turned aside 12 shots in the first 10 minutes, including a sharp pad save on Chris Wagner from the top of the crease. That allowed Cole to put the Penguins in front with a seeing-eye shot from the point.
The Ducks tied the score soon after by cashing in on a two-man advantage when Fowler beat Fleury with a slap shot from the right faceoff dot.
Sheary's goal early in the second period gave the Penguins a 2-1 lead. Bernier misplayed the puck along the side of the net and Sheary scored after a scrum in front.
Kessel extended the lead with a power-play goal, but Perry cut the deficit to 3-2 less than three minutes later. Fleury made the initial pad save off the faceoff, but Perry scored on the rebound.
When: 3 p.m. PDT, Sunday
On the air: TV: Prime; Radio: 830
Update: Ducks forward