Gray was leading late in the count, but eventually fell behind the Redlegs midfielder in the final three rounds.
The 21-year-old former Rudall player finished with 21 votes – the most of any Magpies player.
Teammate Zane Kirkwood was equal-fifth with 17 votes.
Steve Summerton (nine votes), Graham Johncock and Henry Slattery (three), Daniel Kulikowski and Ben Newton (two) and James Meiklejohn (one) also polled.
Port Adelaide – Magarey Medal overall votes
21 votes. Sam Gray
17. Zane Kirkwood
9. Steven Summerton
3. Graham Johncock, Henry Slattery
2. Daniel Kulikowski, Ben Newton
1. James Meiklejohn
Port Adelaide – Magarey Medal round-by-round voting
Round 1
Norwood v Port Adelaide
3. Mitch Grigg (Nor)
2. Matt Thomas (Nor)
1. Peter Persinos (Nor)
Round 2
Sturt v Port Adelaide
3. Sam Kerridge (Stu)
2. Graham Johncock (PA)
1. Steve Summerton (PA)
Round 3
Port Adelaide v Glenelg
3. Tom Logan (Gle)
2. Sam Gray (PA)
1. Jarryd Lyons (Gle)
Round 5
Eagles v Port Adelaide
3. Sam Gray (PA)
2. Scott Lewis (WWT)
1. Luke Jarrad (WWT)
Round 6
Central District v Port Adelaide
3. Sam Gray (PA)
2. Brayden O’Hara (CD)
1. Steven Summerton (PA)
Round 7
West Adelaide v Port Adelaide
3. Chris Schmidt (WA)
2. Zane Kirkwood (PA)
1. Sam Gray (PA)
Round 8
Port Adelaide v North Adelaide
3. Steven Summerton (PA)
2. Leigh Ryswyk (NA)
1. Zane Kirkwood (PA)
Round 10
Port Adelaide v South Adelaide
3. Sam Gray (PA)
2. Zane Kirkwood (PA)
1. Graham Johncock (PA)
Round 11
Port Adelaide v Norwood
3. Sam Gray (PA)
2. Daniel Kulikowski (PA)
1. Mat Suckling (Nor)
Round 12
Port Adelaide v Central District
3. Zane Kirkwood (PA)
2. Sam Gray (PA)
1. Brad Symes (CD)
Round 13
Eagles v Port Adelaide
3. Paul Stewart (WWT)
2. Luke Powell (WWT)
1. James Meiklejohn (PA)
Round 15
Sturt v Port Adelaide
3. Ben Kane (Stu)
2. Zane Kirkwood (PA)
1. Michael Coad (Stu)
Round 16
North Adelaide v Port Adelaide
3. Cohen Thiele (NA)
2. Max Thring (NA)
1. Lewis Johnston (NA)
Round 17
Port Adelaide v Glenelg
3. Sam Gray (PA)
2. Hayden Jolly (Gle)
1. Josh Trembath (Gle)
Round 18
Norwood v Port Adelaide
3. Mat Suckling (Nor)
2. Matt Thomas (Nor)
1. Matt Fuller (Nor)
Round 19
Central District v Port Adelaide
3. Brad Symes (CD)
2. Brayden O’Hara (CD)
1. James Boyd (CD)
Round 20
Port Adelaide v South Adelaide
3. Zane Kirkwood (PA)
2. Ben Newton (PA)
1. Nathan Daniel (SA)
Round 21
Sturt v Port Adelaide
3. Thomas Hurley (Stu)
2. Ben Kane (Stu)
1. Zane Kirkwood (PA)
Round 22
West Adelaide v Port Adelaide
3. Henry Slattery (PA)
2. Steven Summerton (PA)
1. Sam Gray (PA)
Round 23
Port Adelaide v Glenelg
3. Zane Kirkwood (PA)
2. Steven Summerton (PA)
1. Jason Davenport (Gle)