That brought up Denorfia, who scorched a single through the box, snapping Johnson's streak of 35 consecutive converted saves.
He went to second when Johnson hit Nick Hundley with a pitch and scored the go-ahead run on Cabrera's hit through the box.
The rally made a winner of Luke Gregerson, who recorded the final out in the eighth, and Huston Street picked up his ninth save as San Diego took the first of a two-game set.
Orioles starter Chris Tillman produced seven innings of one-run ball, allowing four hits and two walks while striking out seven.
Ryan Flaherty socked a solo homer for Baltimore.