Despite his numbers, Bonilla was promoted to the "A" level Carolina League Alexandria Dukes in 1983, hitting .256 with 11 home runs, 59 RBI, and 28 stolen bases in 136 games. In 1984 with the "AA" level Eastern League Nashua Pirates, he improved his average to .264 with 11 home runs and 71 RBI.
1985 would see Bonilla back in the Carolina League, this time with the Prince William Pirates. He hit .262 in 39 games with three home runs and 11 RBI. After the season, he was selected by the Chicago White Sox in the Rule V Draft. In 75 games with the club, he hit .269 while appearing in five different positions. Apparently, the Pirates wanted him back, and traded pitcher Jose DeLeon to the Sox for him on July 23rd. In 63 games to close out the Pirates season, he hit .240 while batting second and seventh in the order, appearing at both corner infield positions and all three outfield positions. His best game of the season was on August 20th, when he went 2-for-3 with a walk, a double, and three RBI in a 4-1 win over the Houston Astros. The Pirates finished last in the NL East at 64-98, 44 games behind the New York Mets.
In 1987, Bonilla settled in with the Pirates. He hit an NL 10th ranking .300 while hitting 33 doubles and 15 home runs for 77 RBI. He batted first through seventh in the order at first, third, left and right. On July 3rd, he went 3-for-4 with an RBI ground out, a three run shot, and a solo home run, providing most of the offense in a 6-0 win over the Los Angeles Dodgers. Under Jim Leyland, the Pirates improved to 80-82, finishing fifth in the NL East 15 games behind the division topping St. Louis Cardinals.
1988 would see Bonilla earn his first Silver Slugger and his first all-star invitation. He also finished 14th in the season ending NL MVP Award vote. He hit .274 with 87 runs scored (NL 10th), 32 doubles (NL seventh), 24 home runs (NL ninth), 85 walks (NL fifth), and 100 RBI (NL third). He had 25 multi-RBI games, including on April 6th, when he went 4-for-7 with two home runs and five RBI in a 6-5, 14 inning loss to the Philadelphia Phillies. Pittsburgh continued to improve on the bottom line, climbing to 85-75, 15 games behind the division winning Mets.
In 1989, Bonilla appeared in an NL high 163 contests. He earned his second all-star selection and garnered enough MVP votes to come in 16th. He hit .281 with 96 runs (NL sixth), 37 doubles (NL fifth), 24 home runs (NL ninth), and 86 RBI (NL ninth). He played third base and batted cleanup all season. On April 30th, he hit three doubles, going 4-for-5 with two runs scored and two RBI in an 11-1 romp over the San Francisco Giants. The Pirates regressed to 74-88, fifth in the NL East 19 games behind the Chicago Cubs.
Bonilla found another level in 1990, a season which would see him earn his second Silver Slugger Award, his third all-star selection, and a second place finish in the NL MVP voting. He hit .280 with 39 doubles (NL second), 112 runs (NL second), 32 home runs (NL sixth) and 120 RBI (NL second). He played mostly in right field and batted cleanup. On April 20th, he went 3-for-4 with two home runs and three RBI in a 9-4, seven inning win over the Cubs, one of three two-homer games on the season. At 95-67, the Pirates finally got back to the postseason, beating the second place Mets by four games. The NLCS would see the Cincinnati Reds eliminate the Pirates in six games. Bonilla went 4-for-21 with three walks and a double.
1991 would see Bonilla turn in another great season for Pittsburgh, as he won all his familiar awards, earning his fourth consecutive all-star invitation, his third Silver Slugger, and third place on the NL MVP vote. He hit a then-career high .302 (NL seventh) with 102 runs (NL fourth), an NL leading 44 doubles, 18 home runs, and 100 RBI (NL seventh). He played third base and right field, batting cleanup all season long. In a 7-2 win over the Reds on July 19th, Bonilla hit a triple and two home runs, totaling four RBI. Pittsburgh earned a return engagement to the playoffs, finishing at 98-64 a full 14 games over the second place Cardinals. The NLCS would see the Atlanta Braves eliminate the Pirates in seven games. Bonilla went 7-for-23 with six walks and two doubles.
After the season, Bonilla signed a free agent contract with the Mets (five seasons, two all-star appearances, 515 games, .270, 95 home runs, 295 RBI), later playing with the Florida Marlins (two seasons, 181 games, .294, 21 home runs, 111 RBI), the Baltimore Orioles (two seasons, 220 games, .300, 38 home runs, 162 RBI), the Braves (114 games, .255, five home runs, 28 RBI), the Cardinals (93 games, .213, five home runs, 21 RBI), and the Dodgers (72 games, .237, seven home runs, 30 RBI).
All-Time Statline: six seasons, 843 games, .284/.357/.481, 868-for-3060, 483 runs, 191 doubles, 35 triples, 114 home runs, 500 RBI, 24 stolen bases, 364 walks, 448 strikeouts, 19.1 wins above replacement.