Pedroia's double to the gap in left-center in the first drove in Podsednik, and Pedroia scored on Ortiz's one-out single to put Boston up 2-0.
Starlin Castro, who had three hits and two RBIs to end a 2-for 21 slide, got the Cubs on the board in the bottom of the first with an RBI triple.
The Cubs, who have lost 24 of their last 31, tied it in the second as Pedroia misplayed Castro's popup with two outs in the third, allowing a hustling Barney to score all the way from first base as the play was ruled a double.
The Red Sox added a run in the eighth on Saltalamacchia's RBI grounder.
Franklin Morales, starting in place of the injured Josh Beckett (right shoulder inflammation), gave up two runs and four hits with a career-high nine strikeouts in five innings. It was his first start of the year and 16th of his career.
Morales also singled in the fifth.
NOTES: Red Sox 1B Adrian Gonzalez was out of the starting lineup for the first time this season. He struck out as a pinch-hitter the ninth. . Cubs manager Dale Sveum said the team will likely activate C Geovany Soto from the 15-day DL on Monday before the series opener against the White Sox. . C Koyie Hill was released by the Cubs on Sunday after declining an assignment to Triple-A Iowa after clearing waivers. . RHP Matt Garza (2-5, 4.04 ERA) will pitch Monday for the Cubs. ... The Red Sox are off on Monday and Clay Buchholz (7-2, 5.38) will take the hill on Tuesday at home against the Miami Marlins.