On his first meeting with his ex-teammates since leaving the outfit in March, Johnson was key as the Colts and backup quarterback Matt Hasselbeck moved to 3-2 for the season, with Andrew Luck watching on from the sidelines after being ruled out with a shoulder injury.
The Texans struggled to make the most of their drives in the opening quarter, and it was the Colts who delivered the first touchdown of the night.
Hasselback led the Colts on a six-play 60-yard drive before faking a rush to pick out Andre Johnson, who collected a four-yard pass in the endzone to strike a blow to his former side.
Vinatieri was on form again early in the second quarter as he split the posts from 42 yards for his second field goal of the game.
A change was then forced upon the home side when Mallett struggled to recover from a big hit, which handed an opportunity to Brian Hoyer, who lost the starting quarterback spot after the first game of the season.
Houston appeared to click better on offense with a new leader as Hoyer used DeAndre Hopkins more regularly, and they reduced the deficit with a 36-yard field goal from Nick Novak.
A first half dominated by the Colts and Hasselbeck ended in dramatic fashion. As the snap arrived with one second on the clock, Hoyer delivered the goods with a desperate 42-yard pass to Jaelen Strong, who claimed the catch in a crowded endzone to complete a 95-yard drive and cut the deficit to three.
Houston had the momentum heading into the half-time interval, but it was the Colts who registered the first score of the second half as Hasselbeck orchestrated a drive which was completed with Frank Gore completing a four-yard rush as Indianapolis moved 20-10 ahead.
Despite appearing to be fully recovered, Mallett was forced to watch on as Hoyer capitalised on an opportunity by spotting a defensive error from the Colts to pick out Strong, who made it two touchdowns from his first two catches in the NFL after finding the space to collect a short pass.
Houston were refusing to let the Colts pull away, but Indianapolis continued to make the plays needed with the ball in Hasselbeck's hands and a patient 80-yard drive which lasted over eight minutes was used to full effect by the away side, with a couple of penalties keeping them close to the endzone before Johnson took a catch and crept over the line to extend the lead to 10 once again.
Solid defense from the Colts on the next drive prevented Hoyer from finding a third touchdown pass as the Texans settled for a 49-yard field goal from Novak, whose success ensured that the home side were just a score behind their opponents.
The Texans responded well to then force the Colts to punt as Hasselbeck failed to find his receivers, which handed Houston possession with less than three-and-a-half minutes left on the clock.
However, their hopes of a late fightback were dashed when a rethink either side of the two-minute warning ended with Hoyer being hunted down by three rushers and a last-ditch long throw was easily intercepted by Mike Adams.
Indianapolis looked like they may open the door again on third down before Hasselbeck went long with a 43-yard pass to TY Hilton, whose catch allowed the Colts to see out the rest of the time and condemn the Texans to a record of 1-4 from their opening five games.