Pujols, who went 2-for-3 with two walks, and Duncan, who also walked twice, hit two-run homers, while Molina's was a solo shot.
The Cardinals finished with 12 hits and drew eight walks as they evened their season-opening series with the Pirates. Joe Thurston and Khalil Greene each drove in a pair of runs in the victory.
Kyle Lohse (1-0) allowed three runs -- two earned -- on five hits and a walk in seven innings. He struck out four Pirates.
Pittsburgh got a two-run homer from Freddy Sanchez, who went 2-for-4. The Pirates got just three other hits, however. Ryan Doumit got their other run when he drove in Nyjer Morgan with a sacrifice fly.
Snell (0-1) gave up eight runs -- six earned -- on nine hits and three walks in four frames.
"Just didn't have location," Snell said. "I was trying my damndest to get the ball in and change speeds. But nothing was working for me."