Two excellent first-half strikes from Bersant Celina set Swansea City on their way to a fourth consecutive win of pre-season at Exeter.
The Kosovo international fired Steve Cooper’s side ahead with a stunning free-kick, and followed that up by rounding off a lovely team move.
Nathan Dyer added a third early in the second half and, although the hosts pulled one back through a Nicky Law penalty, the Swans ran out comfortable winners on an afternoon that offered more encouragement for Cooper and his squad.
The visitors played with a tempo and intensity during the opening half that hinted at what the former England Under-17s boss is keen to implement and they could easily have been ahead by a far greater margin than two goals at the interval.
Those levels dropped off a little after the break, with substitutions inevitably disrupting some of the flow and pattern of the game, but there were plenty of positive to be taken.
There had been four changes from the side that started at Yeovil in midweek. Erwin Mulder, Kyle Naughton, George Byers and Barrie McKay came in as Kristoffer Nordfeldt, Connor Roberts, Jay Fulton and Wayne Routledge dropped to the bench.
Among the subs there were places for Borja Baston and Ben Cabango, while Matt Grimes captained the side against his boyhood club.
The Swans had a couple of sights of goal in the early going. Oli McBurnie saw a shot blocked from a Dyer pull-back, while Byers saw his low effort saved by Lewis Ward after good play from McKay.
They took the lead in the 11th minute after McBurnie was fouled around 25 yards out. Celina stepped up and produced a magnificent curling free-kick to find the top corner.
And the Swans nearly doubled their lead in the 14th minute as patient build-up ended with a Dyer cross deflecting onto the crossbar.
Dyer was heavily involved and some lovely crisp interplay ended with the winger being hauled down in the area, only for the referee to wave away Swansea’s appeals.
Cooper’s side were playing some excellent football and they doubled their advantage in the 21st minute as McKay showed fine footwork to get into the area and pull-back for Celina to fire home his second.
McKay was soon scampering clear again, but his pull-back could not find a black and green shirt as it whistled across the box before Byers flashed a curling strike just wide from Jake Bidwell’s pass.
Exeter had few chances to threaten and even when they did manage an effort on goal from Nicky Ajose’s low free-kick, Erwin Mulder was equal to it with a sharp save seven minutes before the break.
The half ended with the visitors on the front foot once more, McBurnie and Dyer combining superbly to tee up McKay, who dragged wide.
Cooper made two changes at the break as Roberts and Fulton replaced Naughton and Celina, and within four minutes the Swans had their third goal.
Byers picked off Robbie Cundy as the sub attempted to beat his man in his own third, and the Swans man unselfishly teed up Dyer to fire home.
The Grecians pulled one back six minutes later as Byers was adjudged to have handled Jake Taylor’s shot, with Nicky Law converting from the spot to make it 3-1.
But the Swans were soon on the front foot again, with Roberts and Fulton showing good awareness before Byers saw the eventual shot blocked.
Routledge, Declan John and Joel Asoro were introduced just past the hour mark and John very nearly scored with his first involvement, forcing Ward to smother after an exchange of passes with Routledge.
With the game rather meandering to a conclusion, there were a raft of further substitutions, which included the introduction of Borja Baston.
Swansea City: Erwin Mulder; Kyle Naughton (Connor Roberts 46), Mike van der Hoorn (Brandon Cooper 75), Joe Rodon (Ben Cabango 75), Jake Bidwell (Declan John 63); George Byers (Jack Evans 75), Matt Grimes (captain) (Yan Dhanda 75); Nathan Dyer (Wayne Routledge 63), Bersant Celina (Jay Fulton 46), Barrie McKay (Joel Asoro 63); Oli McBurnie (Borja Baston 75).
Subs not used: Kristoffer Nordfeldt.