With the game tied at 1 in the second, Johnson, 33, led off by taking an offering from Bard to right field for his third homer of the season.
The Red Sox tied the game in the third on rookie Will Middlebrooks' two-out double down the left-field line with runners at the corners, but the Orioles prevented further damage when shortstop Robert Andino's relay throw to catcher Luis Exposito beat Kevin Youkilis to the plate.
Johnson's second homer came against left-hander Andrew Miller in the sixth, a two-run shot that cut the Red Sox's lead to 5-4. It marked Johnson's first multi-homer game since May 28, 2006, as a member of the Nationals against the Los Angeles Dodgers. It was also the first time he homered off a left-handed pitcher since April 27, 2009, when he went deep against Scott Eyre, then with the Philadelphia Phillies, while with Washington.
"I made some adjustments at the plate," Johnson said. "Feeling better in my legs and trying to find strikes."
Podsednik, who didn't play in the majors last season and joined the injury-riddled Red Sox on Tuesday, took reliever Darren O'Day deep to right-center field to give the Red Sox a 6-4 lead in the eighth.
The Orioles put the tying run in scoring position with no outs in the bottom of the inning after a leadoff walk to Markakis and Adam Jones' double, but they were able to plate just one run.
Vicente Padilla struck out Chris Davis on a high fastball, and Che-Hsuan Lin's diving grab of Wilson Betemit's blooper to shallow right-center prevented the tying run from scoring. Markakis tagged from third to make it 6-5.
"It definitely would have been big," Markakis said. "But [Lin] made a great play. It looked like it was going to fall in, he kind of came out of nowhere and made a great play on it, and we just [came] up short. We will look on Friday to come out and get a win."
Boston closer Alfredo Aceves (11th save) struck out Johnson to end the inning and retired the Orioles in order in the ninth.