Matt Hasselbeck connected on 15-of-27 throws and finished with 219 yards, one touchdown and one interception for Tennessee (5-4), which has won two of its last three games.
Rookie Cam Newton was limited to 212 yards on 23-of-40 passing for the Panthers (2-7) in defeat. He also threw one interception.
The Titans defense forced the Panthers to go three-and-out to open the game and Marc Mariani returned the ensuing punt 79 yards for a touchdown. It was the third punt return for a TD allowed by Carolina this season.
Carolina's second drive looked promising as the team marched deep into Tennessee territory, but it did not end well. Greg Olsen fumbled a catch from Newton, giving the Titans the ball at their own eight-yard line.
Rob Bironas kicked a 38-yard field goal seven seconds into the second quarter to put Tennessee up 17-0.
Chris Gamble picked off Hasselbeck and Olindo Mare, who missed from 50 yards away on the final play of the first half, drilled a 29-yard field goal to put the Panthers on the board in the third quarter. But Tennessee extended its lead to 23-3 on two more Bironas field goals (36 and 49 yards), the latter coming with 10:41 to play in the fourth quarter.
Johnson added a one-yard TD run -- only his second of the season -- late in regulation.
Johnson scored his 36th career rushing touchdown, tying Steve McNair for third place in franchise history...Williams had 107 yards on five receptions...Newton added 55 yards on the ground...Carolina's Legedu Naanee caught a game-high eight passes for 75 yards...The Panthers closed out a three-game stretch at home on Sunday.