The Crows trailed by 33 points at quarter-time but overcame the Tigers to win 17.4 (106) to 13.9 (87).
Richmond stunned the Crows with an eight goal first quarter, headlined by three majors to Jack Riewoldt.
But the Crows restricted the Tigers to just five more goals for the game to post their 10th win of the season.
Walker's haul was decisive for the Crows, onballer Scott Thompson was dominant and Jason Porplyzia celebrated his 100th AFL match with an eye-catching display.
Riewoldt didn't score again after his early trio of goals inspired the visitors to an 8.3 to 3.0 lead at quarter-time.
But Adelaide charged into the game in the second quarter, booting four goals in a 13-minute burst.
Taylor kicked his third - and the last of the sudden scoring spree - to bring Adelaide within eight points of Richmond.
The Tigers steadied to lead by 15 points at halftime, 10.4 to 8.1, with both sides losing injured players at the break.
The Crows substituted their captain Nathan van Berlo with a possible leg injury and Richmond's Jake King was helped from the field with an apparent left knee injury.
Both sides found scoring more challenging in the third term, with Adelaide posting three goals to one to claw their way within five points at the last change.
And despite kicking into a strong breeze in the final term, the Crows logged the initial three goals to create a 13-point break.
Tiger Dustin Martin goaled on the run to get Richmond within seven points before Porplyzia capped his influential game with the sealer for Adelaide.