Fiercely energetic Tim Anderson spiked his bat to celebrate a home run and Kansas City’s Brad Keller responded by drilling him with a fastball, setting off a benches-clearing fracas in the Royals’ 4-3, 10-inning victory over the Chicago White Sox on Wednesday.

Anderson tossed his bat toward the White Sox dugout following his two-run drive in the fourth inning. Keller hit him in the buttocks with his first pitch leading off the sixth.

Anderson, the AL’s leading hitter, was restrained by Royals catcher Martin Maldonado but kept jawing with Keller on the way to first base. The dugouts and bullpens emptied, though no punches appeared to be thrown. White Sox manager Rick Renteria and Royals bench coach Dale Sveum shoved each other, and the usually mild-mannered Renteria was particularly animated.

There were four ejections _ Anderson, Keller, Renteria and Sveum.

Anderson has often talked about encouraging players to express themselves, something Major League Baseball has tried to embrace with its “Let the Kids Play” marketing campaign. But not everybody in the game sees it the same way.

The 25-year-old Anderson and the Royals have mixed it up before.

In April 2018, Anderson shouted after a home run against Kansas City. Later in the game, he was playing shortstop when Royals star catcher Salvador Perez reached second base. Words were exchanged and the benches cleared.

When the tempers cooled, Perez and Anderson shook hands. Perez said Anderson had hollered a few weeks earlier when he homered twice on opening day.

Hunter Dozier led off the 10th with a tiebreaking homer against Nate Jones (0-1). His drive to left on a 2-0 fastball made a winner of Wily Peralta (2-1), who worked two innings.

Scott Barlow pitched in the 10th for his first career save, getting Daniel Palka on a game-ending grounder after walking Leury Garcia. Keller gave up two runs and four hits. And the Royals picked up their first win in six road games this season.

Palka, batting for Yoan Moncada in the seventh, singled to break an 0-for-32 skid to start the season. White Sox starter Lucas Giolito left in the third inning because of tightness in his left groin.

The Royals took a 3-2 lead in the seventh against Jose Ruiz when Billy Hamilton walked and scored from second on Dozier’s two-out single.

The White Sox tied it in the eighth, after loading the bases with none out against Jake Diekman.

Peralta came in and got Adam Engel to force the runner at the plate. Garcia then lined a tying single before Palka grounded into a double play.

Giolito _ 4-0 in eight starts against Kansas City _ seemed to feel discomfort throwing a 1-1 pitch to Alex Gordon with two outs in the third inning. He stretched his left leg and took a few warmup tosses before heading to the dugout. Ryan Burr struck out Gordon.

Giolito did not allow a run or hit in 2 2/3 innings. The 24-year-old right-hander struck out five, walked one and hit a batter.