Chuck Crim hurled two-hit ball over the final three innings to earn his fifth save.
Al Leiter (10-8), who had lost five of his previous six decisions, pitched two-hit ball over six innings with six strikeouts and six walks.
Cone might have resented being pulled after eight innings of two-hit ball, but he was briefed on the long-range situation and he acceded.
In the morning, with Ojeda pitching five innings of two-hit ball, the Mets defeated the Cardinals, 4-2.
Shane Rawley pitched two-hit ball for eight innings before Juan Berenguer (2-2) relieved to start the ninth.
Mark Portugal relieved Viola in the sixth and pitched two-hit ball over the final four innings to earn his second save.
Andy McGaffigan pitched two-hit ball over the final three and one-third innings for his first save.
Two starts before that, he pitched eight innings of two-hit ball in San Francisco and was leading the Giants, 2-0, after eight innings.
Ron Darling pitched two-hit ball but walked eight batters before he was relieved in the seventh inning, and twice walked the bases loaded.
Meanwhile, Perez pitched two-hit ball the rest of the way, struck out seven batters and got the side out in order three times.