The Pirates announced Sunday that the deal comes with club options for 2017, 2018 and 2019.
The 23-year-old Tabata is hitting .267 with 17 RBIs in 75 games this year with the Pirates. He also has four home runs, 14 doubles and 15 stolen bases.
Tabata made his Major League debut last year on June 9 and hit .299 with 35 RBIs in 102 games.
Following the All-Star break, he produced a .322 average, which ranked seventh among all National League hitters. He had 93 hits, second in the league behind Colorado's Carlos Gonzalez.
Tabata was acquired by the Pirates from the New York Yankees in 2008.