Signed by scout Pablo Lantigua, Navarro began his professional career in 2006, with the DSL Red Sox. He hit .279 in 53 games. The following year, he played for the Lowell Spinners, hitting .289 in 62 games. In 2008, Navarro played for the Greenville Drive (83 games) and Lancaster JetHawks (42 games), hitting a combined .304 with 11 home runs in 125 games. In 2009, he played for the Spinners (five games), Salem Red Sox (23 games) and Portland Sea Dogs (39 games), hitting a combined .240 in 67 games. Navarro hit .275 with 11 home runs for the Sea Dogs (88 games) and Pawtucket Red Sox (16 games) prior to his August 20, 2010 call-up.
Navarro was added to the Red Sox 40 man roster and called up on August 20 when Dustin Pedroia went on the disabled list. Navarro made his Major League debut against the Toronto Blue Jays that same day.