The 40-year-old Colon (12-3) shook off a tough-luck 3-1 defeat in his previous start to win for the ninth time in his last 10 outings. He outdueled Jeff Locke, who had a personal eight-game winning streak snapped. Locke (8-2) lost for the first time since his first start of the season April 10.
Colon moved into a tie for second in the majors in victories, and has the second-most wins by a 40-year-old in A's history. He allowed seven hits and one walk with five strikeouts.
Grant Balfour remained perfect in 23 save opportunities when he worked a perfect ninth.
Jose Tabata, Pedro Alvarez and Barmes each had two hits for the Pirates (53-35), who have lost five of seven to lose their grip on the majors' best record — and on first place in the NL Central. They trail the St. Louis Cardinals by a half-game.
Locke faced one more than the minimum through six innings. Oakland's first run came on Josh Donaldson's sacrifice fly in the fourth. Lowrie had the Athletics' first hit of the game, a double off the wall in right-center. He advanced to third on a wild pitch — catcher Russell Martin's throw beat him, but Alvarez's tag swiped through too early.
The A's took a 2-0 lead when Locke walked Derek Norris with the bases loaded in the seventh.
The Pirates' only run came in the bottom of the inning when Barmes scored on a two-out infield single by Tabata. McCutchen — an All-Star selection who earlier extended his hitting streak to 10 games — came up and hit the ball hard into the gap, but Crisp thwarted Pittsburgh's chance to tie or take the lead.