DETROIT: J.D. Martinez homered and David Price pitched seven strong innings as the Detroit Tigers beat the Toronto Blue Jays 8-3 in major League Baseball on Saturday.

Alex Avila, making his first career start at first base in place of the injured Miguel Cabrera, made the day’s most spectacular defensive play, diving into the crowd far down the right-field line to retire Russell Martin in the fourth inning.

Prince (8-2) pitched seven innings, giving up one run on eight hits and a walk, striking out seven.

The Tigers scored four times in the first, showing they can still hit a little without their two-time AL MVP. Ian Kinsler led off by being hit by a Dickey knuckler and took third on Yoenis Cespedes’ double. Victor Martinez drove home the first run with a groundout, and J.D. Martinez followed with his 22nd homer of the season.

R.A. Dickey (3-9) retired Avila for the second out, but Nick Castellanos doubled and scored on James McCann’s triple.

Detroit added a fifth run in the fourth on Cespedes’s RBI single, but Kevin Pillar got the Blue Jays on the board with a fifth-inning homer.

Jose Iglesias scored on a wild pitch by Steve Delabar in the eighth, and Kinsler followed with a two-run single.

In the ninth, Jeff Ferrell allowed a two-run homer to Chris Colabello while making his major-league debut.

Bryce Harper homered using a patriotic bat and the Washington Nationals beat the San Francisco Giants 9-3.

The bat was painted blue with white stars. It was also illustrated with the American flag and a silhouette of the D.C. skyline, including the Capitol, the Lincoln Memorial and the Washington Monument — all in navy blue and white.

Washington’s offense got to Madison Bumgarner (8-5) quickly with four consecutive hits including home runs by Michael A. Taylor and Harper.

Tanner Roark (4-3) earned the win after pitching 4 1/3 innings in relief of starter Stephen Strasburg, who exited in the fourth inning with tightness in his left side.

Jhonny Peralta broke an eighth-inning tie with a sacrifice fly, and the St. Louis Cardinals edged the San Diego Padres 2-1 to stop their longest losing streak of the season at four games.

Carlos Martinez threw 6 2-3 solid innings, and Seth Maness (3-0) got the win. Trevor Rosenthal closed for his 24th save in 25 opportunities, getting Matt Kemp to ground out with a runner on to end it.

Zack Greinke scattered four hits over seven scoreless innings to outduel Matt Harvey, Adrian Gonzalez hit a solo homer and the Los Angeles Dodgers survived a late rally to beat the New York Mets 4-3.

Greinke (7-2) extended his scoreless innings streak to 27 2/3 while striking out four and walking none.

Jeff Locke pitched eight innings of two-hit ball, retiring his last 19 batters, and Neil Walker had an RBI single to lift the Pirates over the Indians 1-0.

Locke (5-4) allowed only second-inning singles by Yan Gomes and Giovanny Urshela as the Pirates ended Cleveland’s five-game winning streak. The left-hander struck six, walked none.

Pittsburgh scored in the sixth against Cody Anderson (1-1). Josh Harrison hit a leadoff double off the top of the center-field fence and came around on Walker’s single.

A ninth-inning throwing error by pitcher Brad Boxberger gave the New York Yankees their second straight walk-off win against the Tampa Bay Rays, 3-2, and Kris Bryant hit two early home runs, including a grand slam, to lead the Chicago Cubs over the Miami Marlins 7-2.

Also, the Chicago White Sox beat the Baltimore Orioles 3-2, the Atlanta Braves topped the Philadelphia Phillies 9-5 and the Minnesota Twins defeated the Kansas City Royals 5-3.