BALTIMORE — J.J. Hardy homered, Chris Tillman won his third straight start and the Baltimore Orioles took advantage of three errors by the Kansas City Royals in a 5-3 victory Thursday night.

Manny Machado scored a run and hit an RBI single for the Orioles, whose season-high fourth consecutive win moved them eight games over .500 (21-13) for the first time this year.

Baltimore has been outhit in each of its past three games, including 7-5 in this one. The Orioles are 3-6 when outhit by their opponent.

Tillman (3-1) allowed three runs and five hits in six innings.

Troy Patton pitched the seventh, Darren O’Day and Brian Matusz worked the eighth and Jim Johnson got three outs for his 13th save.

It was the 34th successive save opportunity converted by Johnson, tying the club record set by Randy Myers in 1997.

Alex Gordon hit his second home run in two games and Mike Moustakas went 3-for-4 with a homer for Kansas City.

Luis Mendoza (0-2) gave up five runs and five hits in six innings for the Royals.

The game turned in the fifth inning, when the Orioles went up 5-1 with a three-run uprising fueled by three Kansas City errors and a wild pitch. After Chris Dickerson hit a leadoff double, shortstop Alcides Escobar grabbed Nate McLouth’s sharp grounder and tried to get Dickerson at third, but the throw hit Dickerson to put runners at the corners.

McLouth promptly stole second, and Machado followed with a single to bring home Dickerson.

Machado then stole second, and McLouth came home after Escobar couldn’t handle the poor throw from catcher George Kottaras. Escobar’s throw home was also off target, allowing Machado to take third, and he scored when Mendoza uncorked a wild pitch.

Astros 3, Angels 1: In Houston, Bud Norris pitched into the ninth inning and Chris Carter homered for the second straight game for the Astros.

Marwin Gonzalez and Jimmy Paredes hit RBI doubles in the third before Carter connected on his team-leading eighth homer in the fifth inning to make it 3-0.

Norris (4-3) allowed nine hits and one run in eight-plus innings.

Twins 15, Red Sox 8: In Boston, Pedro Florimon had a solo homer and a two-run double in Minnesota’s season-high, seven-run second inning.

David Ortiz went 0-for-5 to snap his 27-game hitting streak, dating to last season.

Ryan Doumit had a two-run homer, Oswald Arcia went 4-for-5 with three singles and a double, and Trevor Plouffe drove in three runs. Minnesota also had a season-high 19 hits.

Jonny Gomes hit his fourth career grand slam and drove in five runs for Boston.

Indians 4. Athletics 3: In Cleveland,an apparent game-tying homer by Oakland’s Adam Rosales was ruled a double by umpires in the ninth inning, and the Indians held on to beat the Athletics.

Rosales sent a drive off Indians closer Chris Perez that looked as if it cleared the left field wall, but second base umpire Angel Hernandez called it a double, and the crew concurred after leaving the field to review the videotape.

Rays 10, Blue Jays 4: In St. Petersburg, Fla., Matt Moore won his sixth straight decision to start the season, and Evan Longoria drove in three runs for the Tampa Bay Rays.

Moore (6-0) allowed two runs, six hits and four walks in five innings.

Longoria had a two-run homer and RBI single, and Kelly Johnson had three hits, including a two-run shot.