Johnson scored the Florida Marlins' first run, and they squeezed out another in the eighth inning to beat Halladay and the Philadelphia Phillies 2-1 on Tuesday night.
Johnson didn't get the win, but he kept his team in the game against the reigning NL Cy Young Award winner, pitching seven innings and allowing only one run - on Ryan Howard's eighth homer leading off the second.
Chris Coghlan's single in the eighth drove home the tiebreaking run.
Halladay (5-2) gave up only five hits in eight innings but fell to 1-3 in his four matchups against Johnson. The loss ended Halladay's streak of wins in 13 consecutive starts against NL East teams since July 5, 2010.