Santana struck out 11 Marlins through 6 2/3 innings, yielding only three hits while walking two before leaving with the Mets down 1-0.
New York tied it up in the bottom of the seventh, loading the bases on three walks and scoring when Duda drew a fourth base-on-balls off Marlins reliever Steve Cishek.
New York grabbed the lead in the eighth when Duda lined a two-out comebacker off Edward Mujica (0-2), scoring Kirk Nieuwenhuis from third.
Former Mets star Jose Reyes went 0-for-4 in his first appearance in New York since leaving the team and signing a big free-agent contract with Miami.
Marlins starter Josh Johnson allowed one run on three hits over 6 2/3 frames.