The Braves were swept at Dodger Stadium and San Diego before losing two straight at Safeco Field.
Ackley led off the third with a home run and Morrison added a three-run shot off Julio Teheran (10-8) for a 5-3 lead.
Chris Young (10-6) allowed three runs in five innings. He struck out six and reached double-digit wins for the first time since 2006.
Five Seattle relievers combined to throw four innings of scoreless relief, allowing just two hits.
Teheran was wildly inconsistent in six innings, yielding six runs in three frames, while allowing just one baserunner in the other three innings.
Even after allowing Ackley's homer, Teheran appeared to have settled down with two quick outs and a 3-2 advantage. Kyle Seager and Chris Taylor hit back-to-back singles, though, and Morrison followed with no-doubter into the right-field seats.
Seager drove in Seattle's first run with a single in the first, and Taylor and Kendrys Morales later added RBI singles.
The Braves scored all three runs in the third, with Freddie Freeman driving in two with a bases-loaded double, but Tommy La Stella was thrown out trying to score from first on the play.
Braves: SS Andrelton Simmons, who sprained his left ankle during Tuesday's game, was wearing an air cast and using crutches on Wednesday morning. He still hopes to avoid time on the disabled list.
Mariners: OF Michael Saunders, on the 15-day disabled list with a strained left oblique, will join Triple-A Tacoma on Thursday to begin a rehab assignment. Manager Lloyd McClendon said Saunders will DH before moving to the outfield.
Braves: Atlanta returns home to start a 10-game homestand against the Nationals on Friday. Ervin Santana (10-6) lost his only career start against Washington.
Mariners: Rookie Roenis Elias (8-9) will make his second career start against the White Sox on Thursday. Elias allowed five runs in five innings in Chicago on July 4.