Blanton allowed two hits in seven shutout innings to outpitch the Marlins' ace, and Philadelphia won the first game of a doubleheader Tuesday, 9-3.
The victory reduced to five the Phillies' magic number for clinching the NL East.
Blanton (11-7) struck out nine and walked two. Johnson (15-5) twice struck out the side and had 10 strikeouts in five innings, but he gave up seven hits and four runs.
"If he doesn't give up any runs, or if he gives up a lot of runs, I still have to go out and pitch and stick with the same game plan either way," Blanton said.
The Phillies' right-hander went six shutout innings in his last start to beat Washington. He said he had better stuff this time, thanks to a slider that had been unreliable of late.
"I finally found it a little bit," Blanton said. "It kind of came back. That was nice. Hopefully it stays."
Blanton allowed no hits after a leadoff single in the second.
Philadelphia's Raul Ibanez hit his 32nd homer. Jayson Werth and Ryan Howard each had a two-run single for the Phillies, who also scored on a wild pitch, two RBI groundouts and Jimmy Rollins' sacrifice fly.
"I think they hit one ball hard, and it was tough to swallow," Johnson said. "I was trying to battle, make good pitches, and they just hit them. It was just one of those days."
The Phillies won despite striking out 16 times and going 2-for-11 with runners in scoring position.
Facing Sergio Escalona, Florida scored three times in the eighth, with one play destined for the blooper reel. When Hanley Ramirez hit an RBI double, center fielder Shane Victorino chased it down, but when he tried to throw the ball toward the infield, it slipped from his hand and landed at his feet.
Compounding the comedy, Florida's Nick Johnson could have easily scored but didn't see the bobble and stopped at third. Ramirez didn't see Johnson stop and nearly caught up with him at third before retreating safely to second.
Clay Condrey pitched a perfect ninth to complete a five-hitter.
The Marlins, beginning their final homestand, fell nine games behind the defending World Series champions in the East.
"We know we needed to win," Johnson said. "Blanton went out and threw a great game."
Philadelphia remained unbeaten in five games in doubleheaders this year. The Phils also improved the best road record in the majors to 46-29.
The Phillies took a 1-0 lead in the second on Miguel Cairo's RBI groundout, then scored again in the third when Ryan Howard hit into a fielder's choice with runners at the corners.
Philadelphia made it 4-0 in the fifth. Victorino and Chase Utley singled, advanced on a double steal and scored on Werth's two-out, two-run single.
Ibanez hit a solo homer in the Phils' four-run eighth.
Blanton has allowed fewer than four earned runs in 15 of his past 16 starts. ... Attending the Dolphins-Colts game Monday night were Marlins SS Ramirez, 2B Dan Uggla, OF Cody Ross and LHP Dan Meyer.