Carlos Delgado also homered for the Blue Jays, who lost the first three games of the series by a combined 23-10 score before rebounding behind their burly ace.
Wells (14-2) wasn't overpowering, but plenty good enough to win his seventh straight decision on a sticky, 94-degree afternoon. He allowed two earned runs, nine hits and a walk in six innings. The left-hander, who struck out three, improved to 9-0 on the road.
Billy Koch, the fifth Toronto pitcher, got four outs for his 18th save in 22 opportunities.
Batista's third career grand slam gave the Blue Jays a 5-1 lead in the third inning. It was Toronto's seventh slam of the season and the sixth allowed by the Orioles.
Delgado hit his 28th homer off Jason Johnson (0-7) to make it 6-2 in the fifth. He went 3-for-3 with two RBIs.
Johnson gave up six runs in five innings. He allowed only four hits, but two were homers and three of his five walks came around to score.
The Blue Jays got a run in the first when Johnson walked two and Delgado hit an RBI single. Baltimore tied it in the second when Charles Johnson doubled and seldom-used Mark Lewis hit a two-out RBI single.
Batista gave the Blue Jays the lead for good in the third. After a single and two walks loaded the bases with one out, Brad Fullmer hit a short flyball before Batista sent Johnson's first pitch into the left-field seats, his 23rd homer of the year and third of the series.
The Orioles got a gift-wrapped run in their half. Raul Mondesi was charged with a three-base error when he lost B.J. Surhoff's fly ball to right, and Wells committed a balk when he stopped his windup after inadvertently knocking the cap off his head.
Will Clark, whose run of three straight games with a home run ended, hit into a double play with runners at the corners in the sixth to make it 6-3.