On 17 January 2017, Elliott was drafted in the fourth round (77th overall) of the 2017 MLS SuperDraft by Philadelphia Union.[7] He signed with Philadelphia on 24 February 2017.[8] Elliott made his professional debut for the Union on 1 April as a substitute for Richie Marquez against D.C. United.[9] Elliott became a regular starter for the Union through the rest of the season earning 30 appearances; 29 as a starter. He scored his first professional goal against San Jose Earthquakes, the first equalizer of an ultimate 2–2 away draw.[10] Elliott's first season contributions earned him a nomination for the 2017 MLS Rookie of the Year award, but ultimately finished third in the running behind Abu Danladi and winner Julian Gressel.[11]
During his first two seasons with the Union, Elliott earned two starts with Bethlehem Steel FC, the Union's second division team.[12] Elliott scored his first brace for the Union during the 2018 season in a 3–2 win over the New England Revolution.[13] During the 2019 season, Elliott developed a steady partnership next to the rotation of Union homegrown centerbacks Auston Trusty and Mark McKenzie, starting every match in the season.[14] In May 2019, he was awarded a new contract with the Union through 2021 with an option for 2022.[15] During the Union's opening playoff match of the 2019 season, he scored the second goal in a 4–3 comeback victory against New York Red Bulls, the first playoff win in club history.[16]