The Steelers had taken a 13-0 lead in the first half thanks to Shaun Suisham's 46 and 31-yard field goals and Jonathan Dwyer's 33-yard run that set up a 2-yard touchdown pass from Byron Leftwich to Emmanuel Sanders.
The Steelers had outgained the Eagles 101-49 in the first half and led in time of possession by nearly nine minutes.
Johnson suffered his injury late in the Steelers' 16-play drive to open the game. Right tackle Marcus Gilbert was pushed into the back of Johnson's right knee and a torn ACL is feared.
The loss of Johnson, a hybrid tight end/fullback, would leave a critical hole in the Steelers' depth chart that would require either a roster addition, a promotion of rookie Will Johnson, or a shift of tight end Jamie McCoy back to the fullback/tight end role he played last preseason before being placed on the practice squad.
The Steelers also lost left tackle Mike Adams to what Tomlin said was a "less severe knee injury" after Adams was beaten for two sacks in the first quarter.
Dwyer, who carried twice for 40 yards, left the game with a sprained AC joint in his shoulder.
The Steelers surrendered their lead on back-to-back one-play drives by the Eagles that started midway through the third quarter.
Rookie quarterback Nick Foles threw a 70-yard touchdown pass to rookie Damaris Johnson after Stevenson Sylvester blitzed, left his feet on a fake pump, and lost containment of Foles, who found Johnson wide open past safeties Damon Cromartie-Smith and Myron Rolle.
On the next Eagles' snap, Foles threw a 43-yard touchdown pass to Marty Gilyard over cornerback Curtis Brown to take a 14-13 lead.
A 43-yard field goal by Daniel Hrapmann gave the Steelers a 23-21 lead just after the 2-minute warning, but the Eagles drove 46 yards in 11 plays for the game-winning kick.